**λμμ λ°μ΄ν° νμ
(ADT)**μ μ¬λ¬ κ°μ κ°(λ°μ΄ν°)μ μ‘°ν©νμ¬ μλ‘μ΄ νμ
μ μ μνλ λ°©μμ μλ―Έν©λλ€. OCamlμμλ type ν€μλμ | μ°μ°μλ₯Ό μ¬μ©νμ¬ ADTλ₯Ό μ μν©λλ€.
| κΈ°νΈλ₯Ό μ¬μ©νμ¬ μ μν¨.Color νμ
type color =
| Red
| Green
| Blue
;;
let describe_color c =
match c with
| Red -> "λΉ¨κ°"
| Green -> "μ΄λ‘"
| Blue -> "νλ"
;;
print_endline (describe_color Red);; (* λΉ¨κ° *)
print_endline (describe_color Green);; (* μ΄λ‘ *)
Sum Type κ°μ μμ±μλ₯Ό μ°λ κ²λ§μΌλ‘ μ μ κ°λ₯ (e.g.
Red)
β νΉμ§:
Red, Green, Blue μ€ νλμ κ°λ§ κ°μ§ μ μμ.match ... with λ¬Έμ μ¬μ©νμ¬ ν¨ν΄ λ§€μΉ κ°λ₯.Person νμ
type person = {
name: string;
age: int;
};;
let p = { name = "Alice"; age = 25 };;
Printf.printf "μ΄λ¦: %s, λμ΄: %d\\n" p.name p.age;;
(* μΆλ ₯: μ΄λ¦: Alice, λμ΄: 25 *)
print_endlineλ§κ³Printf.printfλ‘λ νμ€ μΆλ ₯ κ°λ₯.%s,%dμ§μ.
nameκ³Όageλ₯Ό νλλ‘ κ°μ§ λ μ½λλ₯Ό μ μνλ©΄ μλμΌλ‘personνμ κ³Ό λμνλ€.
β νΉμ§: