2014-10-11 4 views
0

이 함수는 Real World Haskell에 정의되어 있습니다.하스켈 예제 함수 오류

--file ch03/Lending.hs 
lend amount balance = let reserve = 100 
         newBalance = balance - amount 
         in if balance < reserve 
         then Nothing 
         else Just newBalance 

나는 인터프리터에서 이것을 실행하고이 오류와 끝까지하려고 :

Lending.hs:3:54: parse error on input `=' 

3 호선입니다 "뉴 발란스 = 균형 - 양" 내가이 흰색 생각하지 않습니다 우주 문제 때문에 나는 진정으로 혼란 스럽다.

편집 두 로컬 변수 선언을 정렬한다 :

--file ch03/Lending.hs 
lend amount balance = let reserve = 100 
          newBalance = balance - amount 
         in if balance < reserve 
         then Nothing 
         else Just newBalance 

오류가 지속되면

Lending.hs:3:68: parse error on input `='

+0

공백 문제입니다. –

+3

'newBalance'는'reserve'와 정렬되어야합니다 – luqui

+0

제 편집을 참조하십시오. –

답변

3

Haskell has some funky rules for whitespace and alignment한다. 당신이 하스켈에서 정렬을 할 탭과 공백을 혼합 것처럼 보이는

lend amount balance = let reserve = 100 
          newBalance = balance - amount 
         in if balance < reserve 
         then Nothing 
         else Just newBalance 

: let를 사용하는 경우 즉, 당신은 들여 쓰기 동일한 수준의와 함께 귀하의 라인업을 확인해야합니다. 하스켈은 공백이 중요하지 않은 "중괄호 (curly-brace)"언어 (C, Java 등)와는 다르다는 것을 기억하는 것이 중요합니다. 하스켈에서는 문제가되며 탭과 공백 사이의 col/char 차이를 얻는 것은 고통 스럽습니다. 편집기에서 편집기로) Haskell에서 들여 쓰기 및 정렬을위한 공간 만 사용하는 것이 가장 좋습니다.

이 줄을 main = print (lend 5 500)과 함께 CompileOnline (http://www.compileonline.com/compile_haskell_online.php)에 붙여 넣으면 잘 컴파일됩니다.