我正在學習在 haskell 中使用型別類。
以下代碼有效。
data Mood = Blah | Woot deriving (Show)
changeMood :: Mood -> Mood
changeMood Blah = Woot
changeMood Woot = Blah
main = do
print (changeMood Blah)
print (changeMood Woot)
但以下給出錯誤error: Not in scope: data constructor ‘Mood’。
data Mood = Blah | Woot
changeMood :: Mood -> Mood
changeMood Blah = Woot
changeMood Woot = Blah
instance Show Mood where
show(Mood x) = "Mood: " show(x)
main = do
print (changeMood Blah)
print (changeMood Woot)
如何使第二個代碼作業(實作show功能)。
uj5u.com熱心網友回復:
Mood是一個型別,而不是一個值。它只能用于型別簽名、after::和約束??中(如 中instance Show Mood)。
值是Blahand Woot,所以使用這些值:
instance Show Mood where
show Blah = "Mood: Blah"
show Woot = "Mood: Woot"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528516.html
標籤:哈斯克尔
上一篇:Haskell添加向量和點積
下一篇:我不明白型別宣告
