【发布时间】:2020-11-26 15:35:18
【问题描述】:
我是 Haskell 的新手,我必须能够检查正则表达式是否包含 Empty。我已经定义了一些条件,但是如果正则表达式是嵌套的,如下面的示例“test”中所示,我不知道该怎么做。如果我运行“isEmpty test”,它将返回 False,因为它不是上述定义的情况为 True。但由于它包含“Star”语句,它也应该包含“Empty”。
我认为需要对表达式进行一些递归检查,但目前我不知道该怎么做。
如有任何帮助,我将不胜感激。
data RegExpr = Empty | Symbol Char | Star RegExpr | And RegExpr RegExpr | Or RegExpr RegExpr
isEmpty (Empty) = True
isEmpty (Star Empty) = True
isEmpty (Or _ Empty) = True
isEmpty (Or Empty _) = True
isEmpty (And Empty Empty) = True
isEmpty _ = False
test = Or (Symbol 'a') (Star (And (Symbol 'a') (Symbol 'a')))
【问题讨论】:
-
“检查”是什么意思?请给出清晰的解释和几个示例输入以及所需的结果,并解释您自己已经尝试过的内容。
-
Haskell 中的递归有什么问题吗?
标签: haskell recursion nested pattern-matching