如何在模块中创建单例值?

时间:2013-11-01 02:02:59

标签: haskell

我的类型如下:

data Stitch mark = OverStitch mark (Stitch mark) | TokenStitch | TerminalStitch

TerminalStitch只能有一个值。所以我希望我可以在我的模块的顶层定义这个值:

terminalStitch :: Stitch
terminalStitch = TerminalStitch -- <--- value = constructor()

但它似乎不起作用。我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

这里的具体问题是拼写错误

terminalSticth = TerminalStitch
--         ^ swapped the letters

同样在你的类型签名中,你需要提供一个类型

terminalStitch :: Stitch a

你想在这里实现什么?在Haskell中,你无法仅通过价值来“比较身份”。因此,使用terminalStitch与仅使用TerminalStitch完全相同。