【发布时间】:2020-01-17 10:52:43
【问题描述】:
我在 Haskell 中有这个代码 sn-p:
matchEx :: Expr -> [Expr]
matchEx (Number n) = undefined
matchEx (Boolean b) = undefined
matchEx (If condStatement thenStatement elseStatement) = undefined
在球拍中等效的模式匹配是什么样的?在查看文档后,这就是我所拥有的。谢谢。
(define (matchEx-calls expr)
(match expr
[(literal n) ([])]
[(id ident) ([])]
[(If condStatement thenStatement elseStatement) ([])]
)
)
【问题讨论】:
-
您的
match expr似乎将所有内容都映射到了一个空列表?那么我认为将其定义为tailCalls = const []可能更有意义。 -
tailCalls :: Expr -> [Expr] 保证我们至少有一个参数 - 只有当 Expr 允许空表达式时,它才能是“空表达式”
-
我认为,aswer 非常特定于在 Racket 实现中保存表达式的结构。请提供这种结构的定义,以便设计出适当的模式匹配。
-
Expr 可以是任何类型的球拍表达式,例如字符串、函数调用、数字、if 语句等。
标签: haskell pattern-matching racket