# 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))