목록Tutorials/Ocaml (4)
KoreanFoodie's Study
These are OCaml Library module "List" implementation. Useful when we handle list data type in OCaml. let rec length l = match l with | [] -> 0 | _::t -> 1 + length t (* tail-recursive version of length *) let length' l = let rec f l result = match l with | [] -> result | _::t -> f t (result+1) in f l 0 let hd l = match l with | [] -> raise (Failure "hd") | h::_ -> h let tl l = match l with | [] ..
예제들을 OCaml로 구현해 보자. OCaml quicksort code (* pick the first element as a pivot *) (* ascending order *) let rec qsort comp l = match l with | [] -> [] | p::t -> let (l1,l2) = List.partition (fun x -> comp x p print_int x;print_string " ") l; print_newline(); print_endline "result of qsort : "; List.iter (fun x -> print_int x;print_string " ") (qsort compare l); print_newline() OCaml Stack code 모듈..
이전 게시글에 이어 OCaml에서 꼭 알아야 할 중요한 개념들에 대해 더 알아보도록 하자. 주요 개념들 : Pair, Tuple, List, Currying, Inductive type, match-with 구문, Polymorphic type, try-with-raise, module system, reference. OCaml Pair Pair는 두 개의 값을 한번에 묶는 데 활용된다. 정의는 (x, y)같은 식으로 할 수 있으며, 타입은 a * b형태로 표기된다. Pair의 각 항을 조회하는데 fst와 snd함수를 사용할 수 있다. let p:(int * string) = (1, "a") let i = fst p (* int, 1 *) let s = snd p (* string, "a" *) let..
OCaml 언어 : Ocaml은 여러가지 사용법을 가지는 상위 (high-level)언어이다. 절차형(imperative), 객체지향(object oriented), 함수형(functional) 등의 프로그래밍을 모두 지원한다. Java처럼, 자동으로 메모리를 관리해 주는 Garbage collector가 존재한다. 타입 시스템이 내장되어 매우 안정적으로 사용할 수 있다. 절차형 VS 값 중심형 절차형 언어는 기게에게 순서대로 명령을 전달한다. 함수형 언어의 경우, 값 중심으로 기계에게 식의 계산을 시키는 식으로 동작한다. OCaml 기초 - 값 정의 정수 값 let i = 1 문자열 값 let s = "hello world" Boolean 값 let b = true unit let _ = print_e..