[Ocaml] Pattern matching
·
언어/Ocaml
대부분 Switch - case문은 특정 패턴에 대해 어떤 동작을 수행해야하는 지를 표현한다. Ocaml에서는 match-with 표현식을 통해 구현할 수 있다. Match-with match-with 표현식은 반환값이 존재한다. 왜냐면 Ocaml에서 대부분 표현식이며, match-with도 예외는 아니기 때문이다. match-with문은 다른 언어의 패턴 매칭과 정확히는 유사하다고 할 수 있는데, 이유는 더 강력하기 때문이다. 뭐 얼마나 강력하길래 이럴까? 함께 알아보자. match-with문은 한마디로.. 좀 깐깐하다. 내가 int형 변수에 대한 pattern matching을 하겠다고 match-with문을 사용하면 모든 정수에 대해 어떻게 처리해야하는 지를 명시해야한다. (* int -> unit..
[Ocaml] 함수의 타입에 대해
·
언어/Ocaml
함수의 타입은 화살표 형태로 표기한다. (* increase : int -> int *) let increase x = x + 1 화살표 앞의 타입은 매개변수(parameter)들의 타입이고, 맨 뒤의 타입은 함수의 반환값이 무슨 타입인지가 적힌다. 굳이 앞과 맨 뒤로 나눈 이유는 매개변수가 여러개 올 수 있기 때문이다. 예를들어 변수 3개를 받아 모두 더해서 넘기는 함수를 만든다고 하자. let sum x y z = x + y + z 이런 함수는 타입을 어떻게 적어야할까? 그냥, int,int,int -> int 이렇게 하면 되는걸까? 아쉽게도 Ocaml에서는 매개변수가 2개 이상인 경우 curried form으로 표시한다. Curring은 N개의 매개변수를 갖는 하나의 함수가 있을때, 1개의 매개변수..
[Ocaml] Ocaml의 컨셉에 대해
·
언어/Ocaml
Ocaml은 Caml이라는 언어에 객체지향을 섞은 ML family에 속하는 언어이다. 함수형 언어인 여러 언어들이 그렇듯 함수는 first-class value로 값으로 사용된다. 함수가 값으로 사용된다는게 무슨말이냐고 할 수 있는데, 그건 차차 느끼자. 처음부터 파고들면 머리아프다. Statement와 Expression에 대해 Statement(구문)와 Expression(표현식)에 대해서 잠시 소개할 예정이다. 구문의 정의란 이렇다. Statement : 실행시 프로그램의 상태전이를 수행하는 언어의 구성요소. ex) int x = 3; 한줄 전부가 구문이다. 메모리 상태를 변경하면 상태 전이가 일어났다고 한다. 메모리에 공간을 잡고 값을 할당하는 짓이 상태전이의 한 형태이다. 또는 이미 할당된 변..