2012-10-25 203 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函数。