鉴于以下定义构成了Yorgey教授course的 S Expression :
data Atom = N Integer | I Ident deriving Show
和
data SExpr = A Atom | Comb [SExpr]
派生秀
以下是完整数据类型(在Haskell中)应该是什么?
(bar(foo)3 5 874)
答案 0 :(得分:5)
我相信它会像
Comb
[ A (I "bar")
, Comb
[ A (I "foo")
]
, A (N 3)
, A (N 5)
, A (N 874)
]
每当您遇到一个左括号时,您都会开始一个新的Comb
表达式,因此(foo)
为Comb [A (I "foo")]
而foo
只是A (I "foo")
。
答案 1 :(得分:5)
我假设Ident类型是一个字符串。
I "bar"
,而SExpr为A (I "bar")
Comb [ A (I "foo") ]
N 3
,而SExpr是A (N 3)
Comb [ A (I "bar")
, Comb [ A (I "foo") ]
, A (N 3)
, A (N 5)
, A (N 874)
]