相关疑难解决方法(0)

Haskell模式匹配"发散"和⊥

我试图理解Haskell 2010报告第3.17.2节 "模式匹配的非正式语义".大多数情况,与模式匹配成功或失败有关,似乎很简单,但是我很难理解被描述为模式匹配"发散"的情况.

我被半说服意味着匹配算法没有"收敛"到答案(因此匹配函数永远不会返回).但是,如果不返回,那么,它如何返回一个值,如括号"ie return ?"所示??无论如何"返回" 意味着什么?一个人如何处理这个结果?

第5项具有特别令人困惑的(对我而言)"如果值为?,则匹配发散".这只是说一个值?产生匹配结果??(撇开我不知道那个结果意味着什么!)

任何照明,可能有一个例子,将不胜感激!


经过几个冗长的回答后补遗:感谢Tikhon和所有人的努力.

似乎我的困惑来自于存在两个不同的解释领域:Haskell特征和行为的领域,以及数学/语义领域,而在Haskell文献中,这两者混合在一起,试图用后者来解释前者. ,没有足够的路标(对我来说)属于哪个元素.

显然,"底部" ?位于语义域中,并且不作为Haskell中的值存在(即:您无法输入,您永远不会得到打印为" ?"的结果).

因此,在解释说函数"返回 ?"的地方,这指的是执行任何许多不方便的事情的函数,例如不终止,抛出异常或返回"未定义".是对的吗?

此外,那些评论说?实际上一个可以传递的价值的人, 实际上在考虑绑定到尚未被实际评估的普通函数(可以说是"未爆炸的炸弹")并且可能永远不会,由于懒惰,对吧?

haskell pattern-matching

16
推荐指数
2
解决办法
1300
查看次数

标签 统计

haskell ×1

pattern-matching ×1