3

根据数据类型的定义,我有一个问题:是否可以在定义中使用符号或数字?例如,如果我想为下等号创建一个数据类型,那么下面的代码当然可以工作

data Signs = Lo | Eq

构造函数 Lo 代表“<”,构造函数 Eq 代表“=”。

但我不能使用“真实”的标志。例如以下代码将不起作用

data Signs = Lo "<" | Eq "=" 
type Signs = "<" | "="
type MyInt = '1' | '2'
data MyInt = One '1' | Two '2'

所以我想知道是否有可能在定义中使用“真实”的符号和数字。如果有的话,如果你能告诉我它是如何工作的,那就太好了。;)

4

1 回答 1

2

Operator identifiers prefixed with : can be used in data constructors.

data Signs = (:<) | (:=)

if they are nullary then AFAIK you have to keep the parens:

[(:<), (:=)]

You can use numbers but the first character must be an uppercase letter.

data MyInt = N1 | N2

See http://www.haskell.org/onlinereport/lexemes.html

于 2012-10-08T09:18:01.543 回答