我发现我很少遇到需要使用where
条款。然而,我确实发现我过去偶尔会使用它。什么时候是where
使用的子句(即在什么情况下使用)?什么情况下应该使用它?
Haskell Wiki 上也提供了这个问题的两个很好的答案:
http://haskell.org/haskellwiki/Declaration_vs._expression_style http://haskell.org/haskellwiki/Declaration_vs._expression_style
http://haskell.org/haskellwiki/Let_vs._Where http://haskell.org/haskellwiki/Let_vs._Where
两者都用于创建本地定义,这些定义可能会使用传递到其封闭函数范围内的值,并且当然在封闭函数的上下文之外不可用。它们促进代码重用并最大限度地减少重复。给定fix
和 lambda,两者都可以完全脱糖。一般来说,我会尽可能使用 where 子句,并且只倾向于将 let 子句用于 lambda 或 case 块内的定义,或者在do
符号,当使用通过提取的值时<-
在前面的行中。总的来说,我认为在惯用的现代 Haskell 代码中,声明式风格现在比表达式风格更普遍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)