bar*_*kyn -1 haskell pattern-matching algebraic-data-types
对于以下代码,我继续收到编译器错误,因为我正在编写(List _)并且它正在尝试对列表进行模式匹配.我该如何解决这个问题?
data List a = Cons a (List a) | Empty
instance Monad List where
Empty >>= _ = Empty
Cons x (List _) >>= f = f x
Run Code Online (Sandbox Code Playgroud)
data List a = Cons a (List a) | Empty
Run Code Online (Sandbox Code Playgroud)
这定义了类型构造 List具有两个数据构造 Cons和Empty.Cons有两个字段,一个是类型a,另一个是类型List a- 反过来可以是Empty或者是Cons,等等.
所以当你写:
Cons x (List _) >>= f = f x
Run Code Online (Sandbox Code Playgroud)
编译器正在寻找一个名为pattern-match on 的数据构造函数List,并且没有一个 - 因此错误.如果您只想忽略该字段,请写:
Cons x _ >>= f = f x
Run Code Online (Sandbox Code Playgroud)
现在当然这不是一个适当的Monad实例List- 更像是一个Maybe- 但我会让你自己解决这个问题.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |