2012-03-19 6 views
14

。そのようなlet式の範囲は何ですか?次の行ですか?

+1

'[第] ++ rest'は非常に奇妙である、あまりにも、'最初にすべきである:rest' – configurator

答えて

15

簡単に言えば、それは「doの終わりまで、それが書かれているところから」スコープです。

doの文内では、letの処理方法が異なります。次のようにhttp://www.haskell.org/haskellwiki/Monads_as_computation#Do_notationによれば、それは解釈され

do { let <decls> ; <stmts> } 
    = let <decls> in do { <stmts> } 
8

範囲はdoブロックの残りの部分です。

See §3.14 of the Haskell Report(具体的には、翻訳ブロックの4番目のケース)。 (Porgesが指摘するようにinなしletは、doブロック内でのみ有効ですのではい、これは、doブロックに関するセクションです。)

+2

も注意 ''せずlet'そのin 'は' do'ブロック内でのみ有効です。 – porges

関連する問題

 関連する問題