4

データ コンストラクターで関数を使用できますか? お気に入り:

data Something = (a->b) Something1 Something2
4

2 に答える 2

12

ええ、もちろんできます。唯一の重要なことは、(常に) データ コンストラクターの名前が必要だということです。

data <name> <para0> <param1> ... = <constructor> <arg0> <arg1> <arg2> ...

したがって、この例では、次のようになります。

data Something a b = Constructor (a -> b) Something1 Something2
于 2012-09-16T14:45:19.893 に答える
5

コンストラクターの命名には、従うべきいくつかのルールがあります。

  • 大文字から始めます。
  • アンダースコア、一重引用符、文字、数字を含めることができます。
  • コンストラクターは、「:」で始まる限り、オペレーター名にすることができます。

しかしもちろん、あなたは次のようなデータ定義で関数を持つことができます

data Something a b = Something (a->b) a b 
于 2012-09-16T14:51:03.600 に答える