728x90
Key points:
• Integer -> Char -> Char 와 같은 타입을 가진 함수의 경우, Integer 과 Char 라는 2개의 인수를 갖고, Char 를 결과로 반환한다.
• f x y z 와 같은 함수 콜이 의미하는 것은 ((f x) y) z 이고 개념적으로는 2개의 이름없는 임시함수가 생성된다.
• 요구되는 것보다 적은 인수로 함수를 호출하면 partial application 이 생성된다.
Specifying a function's type
함수의 정의와 함께 함수의 타입을 특정하는 것이 일반적이다.
Continuation with indentation
하스켈 소스 파일은 연속되는 선언의 모음이나 마찬가지다. 아래 2개의 선언을 포함한 파일을 살펴보자.
1 2 3 4 5 | (blackbriar) root@gcloudx:~/blackbriar# cat indent1.hs add::Integer -> Integer -> Integer add x y = x + y(blackbriar) | cs |
선언은 최초 선언한 라인보다 들어쓰기를 함으로써 여러 줄에 걸쳐서 할 수 있다. 이러한 엮인 선언 방식은 보기는 별로일지 모르나 유효한 방식이기는 하다.
1 2 3 4 5 6 7 | add :: Integer-> Integer-> Integer add x y = x + y | cs |
이전 선언과 같은 컬럼에서 다시 그 라인이 시작되면 해당 선언은 끝이 나고, 새로운 선언이 시작되는 셈이다.
1 2 3 4 | (blackbriar) root@gcloudx:~/blackbriar# cat indent2.hs add::Integer -> Integer -> Integer add x y = x + y | cs |
실행하면 다음과 같은 파싱 에러가 뜬다.
1 2 3 4 5 6 7 8 9 10 | (blackbriar) root@gcloudx:~/blackbriar# ghci indent2 GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( indent2.hs, interpreted ) indent2.hs:3:1: parse error (possibly incorrect indentation or mismatched brackets) Failed, modules loaded: none. Prelude> | cs |
728x90
'프로그래밍 Programming' 카테고리의 다른 글
Functional Programming with Haskell -Guards (0) | 2018.04.13 |
---|---|
Functional Programming with Haskell - Function/operator equivalence CSC 372 (0) | 2018.03.31 |
Functional Programming with Haskell - Functions with multiple arguments (0) | 2018.03.30 |
Functional Programming with Haskell - Loading functions from a file (0) | 2018.03.30 |
Functional Programming with Haskell - Simple functions (0) | 2018.03.30 |