haskellwikiから:
expr1 >>= \x ->
(>>=) 演算子の右側が気になります\x ->。どういう意味ですか?
GHCiではNor \x ->nor も\x認識され:typeません。
haskellwikiから:
expr1 >>= \x ->
(>>=) 演算子の右側が気になります\x ->。どういう意味ですか?
GHCiではNor \x ->nor も\x認識され:typeません。
明確にするために、引用しているセクションは次のとおりです。
do 記法から標準の単項演算子への実際の変換は、大まかに言って、パターンに一致するすべての式が次のよう
x <- expr1になります。expr1 >>= \x ->変数代入のないすべての式は、次のように
expr2なります。expr2 >>= \_ ->すべての do ブロックは単項式で終了する必要があり、do ブロックの先頭で let 句を使用できます (ただし、do ブロック内の let 句では
inキーワードを使用しません)。上記の定義は次のmothersPaternalGrandfatherように翻訳されます。mothersPaternalGrandfather s = mother s >>= \m -> father m >>= \gf -> father gf
ご覧のとおり、->は実際には末尾ではありません。上記の引用の最後の例を見ると、が定義されている場合、すべての s に右辺があり、次の行に続くmothersPaternalGrandfatherことがわかります。->定義の最後の行が で終わっていません->。
ウィキのテキストで説明されているように、これexpr1 >>= \x ->は「大まかに」起こることです。expr1 >>= \x ->正しい構文ではありません。関数定義のより完全に括弧で囲まれたバージョンは、次のようになります。
mothersPaternalGrandfather s =
mother s >>= (\m -> father m >>= (\gf -> father gf))