【发布时间】:2017-10-04 23:40:45
【问题描述】:
我对 haskell 和一般的函数式编程非常陌生,我在两本关于 haskell 的不同书籍之间来回切换,但我似乎无法找到我的问题的答案。假设我有一个自定义数据类型,如下所示
data Expr
= Let String Expr Expr
| Binary BinOp Expr Expr
| Unary UnOp Expr
| Literal Literal
| Var String
我有一个这种数据类型的实例,它是第一个构造函数Let String Expr Expr 的形式,是否可以访问该Expr 的特定部分?例如,如果我想在该特定实例中访问 String。
【问题讨论】:
-
当然:
let (Let name val body) = expr in …name…,如果您知道expr是Let。或者在函数中使用任何其他形式的模式匹配或case -
通常当您询问有关 Haskell 的问题时,如果可以的话,明确告诉我们您尝试编写的函数的 type 会很有用。思考这个问题是一个很好的练习,也可以帮助你写出更清晰的问题。
-
@ChrisMartin 我正在做一些家庭作业,所以我不希望任何人直接为我解决问题。但我想做的是创建一个函数,它采用
Expr数据类型并将Expr的xml表示形式作为字符串返回。如果你没有真正阅读可能没有多大意义的家庭作业讲义。
标签: haskell functional-programming custom-data-type