Haskell中为何将otherwise定义为True?
为什么Haskell中的
otherwise被定义为True? 在Haskell的守卫式等式中,otherwise本质就是绑定到True的标识符,这样定义主要有几个核心原因:
提升代码可读性:直接写
True作为兜底守卫时,读者需要反应片刻才能意识到这是“所有剩余情况”的分支;而otherwise这个名字语义直白,一眼就能看出这是用来处理前面所有条件都不匹配的兜底逻辑,让代码意图更清晰。比如你给出的abs函数示例:abs n | n >= 0 = n | otherwise = -n这里的
otherwise比写成True更能明确表达“只要n不满足>=0的情况”都走这个分支。适配守卫式的匹配规则:Haskell的守卫式是按从上到下的顺序依次检查条件的,只有当前面所有守卫条件都为假时,才会落到最后一个分支。把
otherwise定义为True,就能确保它必然会匹配,不会出现“没有任何守卫条件满足”导致的运行时错误,完美承担兜底的角色。遵循社区惯用约定:这是Haskell生态长期形成的编码习惯,标准库把
otherwise绑定到True上,统一了写法,让不同开发者写出的代码风格一致,降低了理解成本。
内容的提问来源于stack exchange,提问作者Pavel Orekhov
相关产品推荐
相关产品推荐

