# OCaml as she is wrote OCaml is not a mainstream language, and the syntax and semantics you are used to from more conventional languages may not work. This page acts as a phrase book explaining how to translate idioms from more common languages to OCaml. ## If you know how to do this in Standard ML fun fact n = if n = 0 then 1 else n * fact (n-1) ### Then do it like this in OCaml let rec fact n = match n with | 0 -> 1 | n -> n * (fact (n - 1)) ## If you know how to do this in APL fact←{×/⍳⍵} ### Then do it like this in OCaml let rec fact n = match n with | 0 -> 1 | n -> n * (fact (n - 1)) ## If you know how to do this in Brainfuck [->+<]>[[>+>+<<-]>>-<[-<+>]>[-<+>]<]<[->+<]< [[->>[-<+>>+<]>[-<+>]<<<]>>[-]<<<]>>[-<<+>>]<< ### Then do it like this in OCaml let rec fact n = match n with | 0 -> 1 | n -> n * (fact (n - 1)) ## If you know how to do this in Futhark def fact n = reduce (*) 1 (iota n) ### Then do it like this in OCaml let rec fact n = match n with | 0 -> 1 | n -> n * (fact (n - 1)) ## If you know how to do this in Emacs Lisp (defun fact (n) (if (= n 0) 1 (* n (fact (- n 1))))) ### Then do it like this in OCaml let rec fact n = match n with | 0 -> 1 | n -> n * (fact (n - 1)) |