Haskell:在哪里与让
我是Haskell的新手,我对Where vs. Let感到非常困惑。它们似乎都提供了相似的目的。我已阅读之间的一些比较哪里和Let但是我很难辨别何时使用它们。有人可以提供一些背景信息,也可以提供一些示例来说明何时使用另一种方法吗? 在哪里与让 甲where子句只能在一个函数定义的电平来定义。通常,这与let定义范围相同。唯一的区别是使用防护装置的时间。该where条款的范围涵盖了所有保护措施。相反,let表达式的范围仅是当前函数子句和保护符(如果有)。 Haskell备忘单 该哈斯克尔维基是非常详细,并提供各种案件,但它使用的假设的例子。我觉得对于初学者来说,其解释太简短了。 Let的优点: f :: State s a f = State $ \x -> y where y = ... x ... Control.Monad.State 将不起作用,因为where是指与f =匹配的模式,其中范围内没有x。相反,如果您从let开始,那么您将不会有麻烦。 Haskell Wiki关于Let的优势 f :: State s a f = State $ \x -> let y = ... x ... in y …