构造函数中的类型变量?

时间:2012-09-16 14:32:42

标签: haskell

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

data Something = (a->b) Something1 Something2

2 个答案:

答案 0 :(得分:12)

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

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

因此,对于我们的示例,它变为

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

答案 1 :(得分:5)

在构造函数的命名中应遵循一些规则。

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

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

data Something a b = Something (a->b) a b