我的类型如下:
data Stitch mark = OverStitch mark (Stitch mark) | TokenStitch | TerminalStitch
TerminalStitch只能有一个值。所以我希望我可以在我的模块的顶层定义这个值:
terminalStitch :: Stitch
terminalStitch = TerminalStitch -- <--- value = constructor()
但它似乎不起作用。我该怎么做呢?
答案 0 :(得分:2)
这里的具体问题是拼写错误
terminalSticth = TerminalStitch
-- ^ swapped the letters
同样在你的类型签名中,你需要提供一个类型
terminalStitch :: Stitch a
你想在这里实现什么?在Haskell中,你无法仅通过价值来“比较身份”。因此,使用terminalStitch
与仅使用TerminalStitch
完全相同。