OCamlμμλ fun e -> match e with ... ν¨ν΄μ μΆμ½ν μ μλ λ°©λ²μ΄ μ‘΄μ¬νλ€! π
μ΄κ²μ "function sugar" λλ **"pattern matching sugar"**λΌκ³ λΆλ₯Έλ€.
function ν€μλ μ¬μ©OCamlμμλ fun e -> match e withμ function ν€μλλ‘ μΆμ½ν μ μλ€.
let f = fun e -> match e with
| Some x -> x
| None -> 0
functionμΌλ‘ μΆμ½:let f = function
| Some x -> x
| None -> 0
β
functionμ μ¬μ©νλ©΄ μΈμ μ΄λ¦(e)μ μλ΅ν μ μμ!
β λ κ°κ²°νκ³ κ°λ μ±μ΄ ν₯μλ¨!
functionμ λ°λ‘ μ¬μ©ν μ μμλ§μ½ λ€μ€ μΈμκ° νμνλ€λ©΄, functionμ λ§μ§λ§ μΈμλ§ μ²λ¦¬νλ λ°©μμΌλ‘ μ¬μ©ν μ μλ€.
첫 λ²μ§Έ μΈμλ₯Ό ν¨ν΄ λ§€μΉ νλ κ²½μ°
(* int option -> int -> int *)
let f = fun x y -> match x with
| Some n -> n + y
| None -> y
;;
f (Some 1) 2;;
λ λ²μ§Έ μΈμλ₯Ό ν¨ν΄ λ§€μΉ νλ κ²½μ°
(* int -> int option -> int *)
let f = fun x y -> match y with
| Some n -> x + n
| None -> x
;;
f 1 (Some 2);;
function μ μ©:λ λ²μ§Έ μΈμλ 첫 λ²μ§Έ μΈμκ° λ§€μΉλ κ²½μ°μ λ§€κ°λ³μκ° λ¨
(* int option -> int -> int *)
let f = function
| Some n -> fun y -> n + y
(* ( + ) nμΌλ‘ μΆμ½ κ°λ₯ *)
| None -> fun y -> y
(* idλ‘ μΆμ½ κ°λ₯ *)
;;
f (Some 1) 2;;
첫 λ²μ§Έ μΈμλ ν¨ν΄ λ§€μΉ μμ λͺ μ
(* int -> int option -> int *)
let f x = function
| Some n -> n + x
| None -> x
;;
f 1 (Some 2);;
π μ£Όμ: function ν€μλλ λ§μ§λ§ μΈμμ ν¨ν΄ λ§€μΉμλ§ μ¬μ©ν μ μμΌλ©°, μμ μΈμλ€μ κ°λ³μ μΌλ‘ λͺ
μν΄μΌ νλ€.