은 c
이 유효하지 않고 두 번째 종료시 왜 종료되지 않는지 이해하려고합니다. 설명에서 here main
은 단지 평가되지 않은 썽크이며, executing
은 단지 데이터 구조를 구축하고 있습니다. 나는 같은 원리를 여기에 적용하려고 노력하고 있는데 왜 첫 번째 주전자가 끝나지 않는지 보게된다. 누군가 제가이 부분을 이해하도록 도와 주거나 이해에 대한 조언을 주면 위대 할 것입니다. 이 외에도 GHCI는 왜 이것을 TCO로 인식 할 수 없습니까? doesn''t는 정의에 적합하다?Haskell : TCO and Lazy evaluation
main = loop
where
loop = do
c <- getChar
case valid c of
Nothing -> return()
Just b -> print b
print c
loop
> main :: IO()
> main = loop
> where
> loop = do
> c <- getChar
> case validate c of
> Nothing -> return()
> Just b -> do
> print b
> loop
감사합니다.
['return'] (http://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad-Instances.html#v:return)은 단지 라이브러리 함수임을 알고 있습니다. 절차 형 언어의'return' 키워드와 아주 다른 방식으로 작동합니까? – leftaroundabout
@leftaroundabout : "POST"를 눌렀을 때 "무언가"가 올바르지 않다는 것을 깨닫고 바로이 주석을 보았습니다. 감사. – user3169543
답변을 수락하는 것 이외의 다른 질문을 '닫을 수 없습니까?' 그렇다면 대답을 받기 전에 언젠가 기다려야합니다. stackoverflow 설명서를 읽습니다. 지금은 동의하려면 7 분 더 기다려야합니다 .--). – user3169543