답변:
GHCi 7.x 이하에서는 내용 let
을 정의 하려면이 필요 합니다.
Prelude> let f x = x * 2
Prelude> f 4
8
GHC 8.0.1부터 GHCi에서 최상위 바인딩이 지원 되므로 OP의 코드는 변경없이 작동합니다.
GHCi, version 8.0.1.20161213: http://www.haskell.org/ghc/ :? for help
Prelude> f x = x * 2
Prelude> f 4
8
LYAH
는 이제 언급 let
합니다. 그러나 후속 조치. 에서 LYAH
본인은 addThree :: Int -> Int -> Int -> Int
(줄 바꿈) addThree x y z = x + y + z
하지만에만 두 번째 실행 GHCi
과를 let
. 왜?
Haskell 소스 파일을 입력하면
f x = 2 * x
맞다.
ghci에 직접 입력 할 때 let
줄 시작 부분에 입력해야합니다 .
let f x = 2 * x
let
. GHCi를 하나의 큰 let ... in ...
성명 으로 생각하십시오 .
ghci 사용에 대한 좋은 경험 법칙은 입력하는 모든 코드가 do-block 의미론을 준수해야한다는 것입니다. 즉, 구문 론적으로 IO 모나드 내에서 프로그래밍하고 있다고 가정 할 수 있습니다 (이게 새로운 용어 인 경우 걱정하지 마십시오!이 자습서를 읽는 것이 좋습니다 ).
이 답변은 예를 통해이 점을 설명하며 IO 및 ghci의 특성에 대한 더 많은 작업 통찰력을 제공 할 수 있습니다.
let
. 나는 "wtf, 왜 내가 사용해야 하는가"같았고 let
이것을 읽고 깨달았다.
let
예제에 없습니다