5
Haskell:Let vs. Let
私はHaskellを初めて使用するので、Where対Letで非常に混乱しています。どちらも同じような目的を提供しているようです。WhereとLetの比較をいくつか読んだことがありますが、それぞれをいつ使用するかを見分けるのに問題があります。誰かがコンテキストを提供したり、場合によってはどちらを使用するかを示すいくつかの例を提供してもらえますか? どこでvs. Let where句は、関数定義のレベルで定義することができます。通常、これはlet定義の範囲と同じです。唯一の違いは、ガードが使用されている場合です。where条項の範囲はすべてのガードに及びます。対照的に、let式のスコープは、現在の関数句とガード(存在する場合)のみです。 Haskellチートシート Haskellのウィキは非常に詳細であり、様々な例を提供していますが、仮想的な例を使用しています。初心者には説明が短すぎます。 Letの利点: f :: State s a f = State $ \x -> y where y = ... x ... Control.Monad.State whereはパターンマッチングf =を参照するため、機能しません。xはスコープ内にありません。対照的に、letから始めていれば、問題はありません。 Letの利点に関するHaskell Wiki f :: State s a f = State $ \x -> let y = ... x ... in y 場所の利点: …