Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试本教程中给出的以下示例。
我无法理解的是案件如何保护案件'c'并且_根本不使用on?
'c'
_
on
我修改了这里给出的代码,但是当我运行它时,我得到了错误“Non-exhaustive patterns in case”:
*StateGame> main "accaaaa" *** Exception: state1.hs:(27,5)-(31,36): Non-exhaustive patterns in case
为什么会这样?
案例保护是一个布尔表达式,在成功匹配相应的模式后进行检查。如果计算结果为True,则选择该分支。否则,Haskell 将继续从上到下尝试每个案例。
True
在您的示例中,所有案例都有警卫表达式on:
case x of 'a' | on -> ... 'b' | on -> ... 'c' | on -> ... _ | on -> ...
因此,当onis时False,不能选择任何分支,因此您会得到“非详尽模式以防万一”异常。
False