当我加载一个包含0=1行的文件时,GHCi中到底发生了什么?
我原以为这会给出一个错误,但它似乎什么也做不了。它有什么作用吗?
我假设它在GHCi中等同于只说"let 0=1“。这是做什么的?
发布于 2013-09-04 02:03:55
let
绑定中的0
实际上是文字0
上的模式匹配。一开始我也不确定发生了什么,但你可以通过使用严格的模式匹配来确认这一点,如下所示:
Prelude> :set -XBangPatterns
Prelude> let !0 = 1 in 0
*** Exception: <interactive>:13:5-10: Non-exhaustive patterns in pattern binding
发布于 2013-09-04 02:06:01
如果你给失败的模式匹配一个名称x
,你也可以像这样强制它:
x @ 0 = 1
main = print x
这会产生错误:
FILE.hs: /path/to/FILE.hs:1:5-13: Irrefutable pattern failed for pattern x@0
https://stackoverflow.com/questions/18598365
复制相似问题