2013-11-01 74 views
0

我有一個類型如下:如何在模塊中創建singelton值?

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

只能有TerminalStitch之一單個值。所以我希望我可以在我的模塊的頂層定義這個值:

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

但它似乎並不奏效。我該怎麼做呢?

+0

至少有一些問題。 'terminalStitch'具有類型'縫合a',而不是'針跡'或'TerminalStitch'。另外,在'terminalStitch'聲明的第二行中有拼寫錯誤。 – jtobin

+0

修正了拼寫錯誤,'針a'已經幫了 –

回答

1

那麼這裏的具體問題是一個錯字

terminalSticth = TerminalStitch 
--  ^swapped the letters 
在您的類型簽名

此外,您還需要提供一個拼接式

terminalStitch :: Stitch a 

什麼是你想在這裏實現?在Haskell中,你只能通過價值來「比較」身份。所以使用terminalStitch與僅使用TerminalStitch完全相同。

+0

我想得到一個總是與'TerminalStitch'匹配的常量。用於針跡的TerminalSitch與整數的0相同。 –

+0

@AlekseyBykov爲什麼不使用'TerminalStitch'?我的意思是,如果你願意,你可以做到這一點,但我沒有看到這一點 – jozefg

+0

這正是我所做的,對嗎? –