는 :in을 사용하지 않을 때 let의 범위는 무엇입니까? 나는 다음과 같은 코드를 가로 질러 하스켈 튜토리얼에서는
do [...]
let atom = [first] ++ rest
return $ case atom of
참고 let
표현식은 in
블록을 가지고 있지 않습니다. 그러한 let
표현의 범위는 무엇입니까? 다음 라인?
는 :in을 사용하지 않을 때 let의 범위는 무엇입니까? 나는 다음과 같은 코드를 가로 질러 하스켈 튜토리얼에서는
do [...]
let atom = [first] ++ rest
return $ case atom of
참고 let
표현식은 in
블록을 가지고 있지 않습니다. 그러한 let
표현의 범위는 무엇입니까? 다음 라인?
간단히 말하자면, 그것은 "그것이 do
이 끝날 때까지 작성 어디에서"범위 것 .
do
문 내에서 let
은 다르게 처리됩니다. 다음
http://www.haskell.org/haskellwiki/Monads_as_computation#Do_notation에 의하면, 해석 :
do { let <decls> ; <stmts> }
= let <decls> in do { <stmts> }
범위는 do
블록의 나머지 부분입니다.
See §3.14 of the Haskell Report (특히, 번역 블록의 네 번째 경우). (Porges가 지적으로 in
없이 let
가하는 do
블록 내부에서만 유효하기 때문에 예,이, do
블록에 대한 섹션입니다.)
참고 rest' in'은'do' 블록 내에서만 유효합니다. – porges
'[제] ++ rest'도 제'이어야 상당히 홀수 : 또한'없이 그'let'을 – configurator