갈루아의 반서재

728x90

주요 연산은 직관적으로 이해가 가능할 것이다. 하스켈의 경우 다음 몇 가지 사항만 유의하자.

+ 는 숫자의 경우에만 작동하고, == 는 비교가능한 대상간에 작동하기 때문에 위의 경우에는 오류를 발생시킨다. 

  1. Prelude> 5 + "llama"
  2.  
  3. <interactive>:5:3:
  4.     No instance for (Num [Char]) arising from a use of ‘+
  5.     In the expression: 5 + "llama"
  6.     In an equation for ‘it’: it = 5 + "llama"
  7. Prelude>
  8.  
  1. Prelude> 5 == True
  2.  
  3. <interactive>:3:1:
  4.     No instance for (Num Bool) arising from the literal ‘5
  5.     In the first argument of ‘(==)’, namely ‘5
  6.     In the expression: 5 == True
  7.     In an equation for ‘it’: it = 5 == True

함수 어플리케이션이 가장 높은 우선 순위를 가진다. 즉, 아래의 2 구문이 동일하다는 의미이다. 

  1. Prelude> succ 9 + max 5 4 + 1
  2. 16
  3. Prelude> (succ 9) + (max 5 4) + 1
  4. 16
  5. Prelude>

만약 함수가 2개의 파라메터를 갖는 경우, 함수를 backticks(역따옴표)로 둘러싸는 경우를 infix function 이라고 부른다. 예를 들어 div 함수의 경우 2개의 정수를 인수로 갖고, 나눗셈의 몫을 반환한다. div 92 10 의 경우 9가 나오는 것이다. 하지만 위와 같이 호출하는 경우 어느 수가 제수, 피제수인지 헷갈릴 수가 있다. 따라서 이런 경우 92 `div` 10 과 같이 infix function 의 형태로 기술하는 것이 이해하기 좋다. 

  1. Prelude> div 92 10
  2. 9
  3. Prelude> 92 `div10
  4. 9


728x90