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 回答