在构造函数中输入变量?

per*_*nto 4 haskell

我可以在数据构造函数中使用函数吗?喜欢:

data Something = (a->b) Something1 Something2
Run Code Online (Sandbox Code Playgroud)

fuz*_*fuz 12

是的,当然可以.唯一重要的是你(总是)需要一个数据构造函数的名称:

data <name> <para0> <param1> ... = <constructor> <arg0> <arg1> <arg2> ...
Run Code Online (Sandbox Code Playgroud)

因此,对于我们的例子,它变成了

data Something a b = Constructor (a -> b) Something1 Something2
Run Code Online (Sandbox Code Playgroud)


Sat*_*vik 5

在命名构造函数时要遵循一些规则.

  • 以大写字母开头.
  • 可以包含下划线,单引号,字母和数字.
  • 构造函数可以是运算符名称,只要它们以':'开头即可.

但是你可以在数据定义中使用函数

data Something a b = Something (a->b) a b 
Run Code Online (Sandbox Code Playgroud)