GHCi의 여러 줄 명령
ghci에 여러 줄 명령을 입력하는 데 문제가 있습니다.
다음 2 줄 코드는 파일에서 작동합니다.
addTwo :: Int -> Int -> Int
addTwo x y = x + y
그러나 ghci에 오류가 발생합니다.
<interactive>:1:1: error:
Variable not in scope: addTwo :: Int -> Int -> Int
나는 또한 코드를 넣는 시도했지만 :{ ... :}
이 예제에서는 작동하지 않습니다. 왜냐하면 이것은 한 줄에 행을 추가하기 때문입니다.
WinGHCi 버전 2011.2.0.1을 사용하고 있습니다.
대부분의 경우 유형 유추를 사용하여 서명을 사용할 수 있습니다. 귀하의 예에서 다음이 충분합니다.
Prelude> let addTwo x y = x + y
유형 시그니처가있는 정의를 원하거나 정의가 여러 줄에 할 수있는 경우 ghci에서 수행 할 수 있습니다.
Prelude> :{
Prelude| let addTwo :: Int -> Int -> Int
Prelude| addTwo x y = x + y
Prelude| :}
Prelude> addTwo 4 7
11
관리자 한 줄로 짜낼 수도 있습니다.
Prelude> let addTwo :: Int -> Int -> Int ; addTwo x y = x + y
설명서 의 프롬프트 섹션 에있는 대화식 평가에서 ghci와의 상호 작용에 대한 자세한 내용을 확인할 수 있습니다 .
GHCI를 시작하고 다음을 입력하여 문제를 해결하십시오 :set +m
.
Prelude> :set +m
Prelude> let addTwo :: Int -> Int -> Int
Prelude| addTwo x y = x + y
Prelude|
Prelude> addTwo 1 3
4
팔.
여기서 일어나고있는 것은 (그리고 나는 주로 당신 에게 이야기 하고 있습니다. 알아 당신은 하스켈을 통해 길을 걷는 동안 도움을 구하는 사람 은 GHCI가 즉시 기능 이름의 바인딩을 변경 하는 대화 형 환경이라는 것입니다 . 함수 정의를 let
블록 으로 묶어야 하스켈이 정의하려는 내용을 알 수 있습니다. :set +m
물건을 여러 줄에 대한 속기 :{
코드를 :}
구축합니다.
공백은 블록 단위로 중요시 유의 사항 함수 형식 정의 다음에 4 개의 공백을 설명하기 위해 4 개의 공백으로 들여 써야합니다 let
.
사용 let
:
Prelude> :{
Prelude| let addTwo :: Int -> Int -> Int
Prelude| addTwo x y = x + y
Prelude| :}
Prelude> addTwo 2 3
5
현재 GHCI 버전 8.0.1 , let
더 이상 REPL에 함수를 정의 할 필요가 없습니다.
따라서 당신에게 잘 작동합니다.
λ: addTwo x y = x + y
λ: addTwo 1 2
3
λ: :t addTwo
addTwo :: Num a => a -> a -> a
Haskell의 형식 유추는 다음과 같이 수레에 광고 일반화 된 타이핑을 제공합니다.
λ: addTwo 2.0 1.0
3.0
직접 입력해야하는 경우 여러 줄 입력 let
과 함께 사용 :set +m
합니다 ( GHCI에서 여러 줄 입력을 활성화 하는 데 사용).
λ: let addTwo :: Int -> Int -> Int
| addTwo x y = x + y
|
λ: addTwo 1 2
3
그러나 Int
다형성이 아닌 타이핑 때문에 전달 하지 않는 오류가 발생합니다 .
λ: addTwo 2.0 1.0
<interactive>:34:8: error:
• No instance for (Fractional Int) arising from the literal ‘2.0’
• In the first argument of ‘addTwo’, namely ‘2.0’
In the expression: addTwo 2.0 1.0
In an equation for ‘it’: it = addTwo 2.0 1.0
참고 URL : https://stackoverflow.com/questions/8443035/multi-line-commands-in-ghci
'IT' 카테고리의 다른 글
SMTP 서버에서 PHP로 이메일 보내기 (0) | 2020.07.17 |
---|---|
현재 메소드 호출의 견적 ID (0) | 2020.07.17 |
100 % 너비 테이블 오버플로 div 컨테이너 (0) | 2020.07.17 |
"mro ()"는 무엇을 씁니까? (0) | 2020.07.17 |
끝에서 줄 바꿈을 제거하는 방법 (Java)? (0) | 2020.07.17 |