我发现我很少遇到需要使用 where
的情况。条款。但是,我确实发现过去我偶尔使用过它。 where
是什么时候使用的子句(即它在什么情况下使用)?我应该在什么情况下使用它?
最佳答案
Haskell Wiki 上也有这个问题的两个很好的答案:
http://haskell.org/haskellwiki/Declaration_vs._expression_style
http://haskell.org/haskellwiki/Let_vs._Where
两者都用于创建可能使用传递到其封闭函数范围内的值的本地定义,并且肯定在封闭函数的上下文之外不可用。它们促进代码重用并最大限度地减少重复。给定 fix
和 lambda,两者都可以完全脱糖。通常,我尽可能使用 where 子句,并且只倾向于在 lambda 或 case block 内或 do
中使用 let 子句进行定义。表示法,当使用通过 <-
提取的值时在前几行。总的来说,我认为声明式风格现在比惯用的现代 Haskell 代码中的表达风格更普遍。
关于haskell - `where` 子句在 Haskell 中在哪里派上用场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032183/