1

嗨,我是 Haskell 的新手,对不起,如果这个问题是基本的,但我不明白这里发生了什么。我想从 Type Maybe Int 中定义一个元素

m :: Maybe Int

m = Just m | Nothing 

但我收到一个错误:

 parse error on input `|'
   |
3 | m = Just m | Nothing 
   |            ^
Failed, no modules loaded.

为什么会这样。

4

1 回答 1

2

一步一步,你必须看看数据类型的定义可能:

data Maybe a = Nothing | Just a

然后,您可以在那里看到两个特殊函数,称为构造函数,在您的示例中,它可以用作:

m :: Maybe Int
m = Just 5

使用另一个构造函数的另一个例子:

nothingHere :: Maybe a
nothingHere = Nothing

如果您想创建自己的数据,可能应该是这样的:

data MyMaybe a = None | Some a deriving Show

m :: MyMaybe Int
m = Some 5
于 2019-10-12T18:30:01.477 回答