首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >等号与haskell字面值

等号与haskell字面值
EN

Stack Overflow用户
提问于 2013-09-04 01:41:36
回答 2查看 588关注 0票数 18

当我加载一个包含0=1行的文件时,GHCi中到底发生了什么?

我原以为这会给出一个错误,但它似乎什么也做不了。它有什么作用吗?

我假设它在GHCi中等同于只说"let 0=1“。这是做什么的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-04 02:03:55

let绑定中的0实际上是文字0上的模式匹配。一开始我也不确定发生了什么,但你可以通过使用严格的模式匹配来确认这一点,如下所示:

代码语言:javascript
复制
Prelude> :set -XBangPatterns 
Prelude> let !0 = 1 in 0
*** Exception: <interactive>:13:5-10: Non-exhaustive patterns in pattern binding
票数 23
EN

Stack Overflow用户

发布于 2013-09-04 02:06:01

如果你给失败的模式匹配一个名称x,你也可以像这样强制它:

代码语言:javascript
复制
x @ 0 = 1
main = print x

这会产生错误:

代码语言:javascript
复制
FILE.hs: /path/to/FILE.hs:1:5-13: Irrefutable pattern failed for pattern x@0
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18598365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档