2012-10-25 414 views
-4

我不明白這是什麼 「實例」 在Haskell指(在第19行):「實例」 在Haskell

16 > type Prog = [Function] 
17 > data Function = Defun String String Exp 
18 > --    deriving Show 
19 > instance Show Function where 
20 > show (Defun n p e) = "\n" ++ n ++ "(" ++ p ++ ") { return " ++ show e ++ "; }\n" 
21 > showList [] = showString "" 
22 > showList (f:fs) = shows f . showl fs 
23 >  where showl [] = showString "" 
24 >    showl (f:fs) = shows f . showl fs 

THX。

+4

這個問題的答案是谷歌查詢「haskell實例」(haskell的一個溫柔的介紹,學習你一個haskell和haskell wikibook)的第一個結果的3/6。請在stackoverflow上詢問之前盡力找到答案。 – HaskellElephant

回答

5

閱讀關於type classes

Show是一種類要定義Function數據類型的Show實例,所以你可以做這樣的事情

show (Defun "a" "b" someExpr) 

,它會使用show定義將此轉換爲字符串表示Function。 如果您是來自OO背景,那麼您可以考慮爲Function數據類型重載show函數。