-4

我无法理解这个“实例”在 Haskell 中的含义(第 19 行):

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

谢谢。

4

1 回答 1

5

阅读类型类

Show是一个类型类,并且您正在Show为数据类型定义一个实例Function,因此您可以执行类似的操作

show (Defun "a" "b" someExpr)

它会使用Function. 如果您来自 OO 背景,那么您可以考虑为数据类型重载show函数。Function

于 2012-10-25T06:03:08.270 回答