2017-10-04 16 views
0

이 코드를 실행 해 보니 GHCi를 사용할 수 없게되었습니다. 의미, 명령 줄 (Windows) 결국 모든 입력에 응답하지 단순히 빈 줄을 표시합니다.GHCi가 이것으로부터 "충돌"하는 것을 어떻게 방지합니까?

Prelude> b = ["Empty", "Discrete", "Distinct", "Defiant", "Useful", "Good", 
"Imperative", "Safe", "Lawful", "Unpresidented", "Decadent", "Rich", 
"Strong", "Marvelous", "Volatile", "Obtuse", "Acute", "Revolutionary", 
"Frank", "Regular"] 
Prelude> length b 
20 
Prelude> import Data.Char 
Prelude Data.Char> a = [ map toLower x | x <- a ] 
Prelude Data.Char> a 

......

+0

코드 블록으로 코드를 포맷하고 완전한 질문을하십시오. 문제가 무엇이고 무슨 일이 일어나고 있습니까? –

+0

질문을 개선하십시오. 1) 코드를 스 니펫으로 형식화합니다. 2) '길이 a'에서 'a'가 어디에서 오는 것인지 명확하지 않다. 3) 정확하게 "사용할 수 없다"는 것은 무엇을 의미합니까? – Yuras

+0

''ghci'를 사용할 수 없게 만든다는 것은 무엇을 의미합니까? –

답변

4

이 완전히 예상 정상적인 동작입니다.

a = [ map toLower x | x <- a ] 

는 재귀가 끝나지 않아 a의 재귀 적 정의입니다. 등호 양쪽에 a을 적어 두십시오. GHCi는 충돌하지 않으며 Ctrl-C를 눌러 코드를 중단 할 때까지 항상이 코드를 항상 실행합니다.

+0

하스켈이 게으르다 고 생각했습니다. 정의를 평가하는 이유는 무엇입니까? –

+3

@MarkNeu 인터프리터 프롬프트에서 입력하여 인쇄하도록 요청했기 때문입니다. –

+1

@MarkNeu 추측 :'a = [map toLower x | x <- b>'. 마지막에'b'에 주목하십시오! –