오보에블로그

9. [OCaml] 사용자 정의 타입 본문

Prev./Lab

9. [OCaml] 사용자 정의 타입

(OBO) 2019. 7. 5. 15:04
728x90

1. 이미 있는 타입에 새로운 이름 붙이기

string 과 int와 같이 기존에 있는 타입에 새로 이름을 붙여준다.

type var = string
type var2 = int

1. 새로운 타입 만들기

type days = Mon | Tue | Wed | Thu | Fri | Sat | Sun;;

days라는 타입에는 Mon ; Tue ; Wed ; Thu ; Fri ; Sat ; Sun 로 총 7개의 원소들로 구성되어있다.

응용 예시로, 해당 요일의 다음 요일이 무엇인지 알려주는 함수를 구현해보자.

let nextday d = 
  match d with
  | Mon -> Tue
  | Tue -> Wed
  | Wed -> Thu
  | Thu -> Fri
  | Fri -> Sat
  | Sat -> Sun
  | Sun -> Mon;;
val nextday : days -> days = <fun>

원소에 여러개의 타입을 지정하고 싶다면 * 를 사용하여 표현 할 수 있다.

type profile = Name of string
  | BIRTH of int * int * int
  | LENGTH of float
  | SHOESSIZE of int * int ;;

다음과 같이 입력을 하면 

Name ("OBO");;
BIRTH (1998,4,30);;
LENGTH (504.4);;
SHOESSIZE (245 , 250);;

아래와 같은 결과를 얻을 수 있다.

 

728x90