User Tools

Site Tools


cs_lang:ocaml

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cs_lang:ocaml [2011/07/12 09:30] cedriccs_lang:ocaml [2012/04/29 11:44] (current) cedric
Line 1: Line 1:
 +====== Presentation ======
 +===== Paradigm ====
 +  * multi-paradigm: imperative, functional, object-oriented.
 +
 +===== Typing discipline =====
 +  * static typed;
 +  * strongly typed;
 +  * inferred.
 +
 +
 +====== Learning Objective Caml ======
 +  * [[http://caml.inria.fr/ocaml/ | Official Website]];
 +  * [[http://caml.inria.fr/pub/docs/oreilly-book/ | Developing Applications With Objective Caml]] (in [[http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/ | french]]).
 +
 +
 ====== Simple examples ====== ====== Simple examples ======
 +===== Increment a number =====
 +<code ocaml>
 +# let inc n = n+1;;
 +val inc : int -> int = <fun>
 +
 +# inc 2;;
 +- : int = 3
 +
 +
 +# Alternative:
 +# let inc = (+) 1;;
 +val inc : int -> int = <fun>
 +</code>
 +
 +==== Equivalent in Python ====
 +<code python>
 +>>> def inc(n):
 +...     return n+1
 +
 +>>> inc(2)
 +3
 +</code>
 +
 ===== Great common divisor ===== ===== Great common divisor =====
 <code ocaml> <code ocaml>
-let rec pgcd a b = match (a mod b) with+let rec gcd a b = match (a mod b) with
   | 0 -> b   | 0 -> b
-  | c -> pgcd b c;;+  | c -> gcd b c;; 
 +val gcd : int -> int -> int = <fun> 
 + 
 +# gcd 77 42;; 
 +- : int = 7
 </code> </code>
  
 +==== Equivalent in Python ====
 +<code python>
 +def gcd(a, b):
 +    while b != 0:
 +        (a, b) = (b, a%b)
 +    return a
 +</code>
 ===== Parity ===== ===== Parity =====
 <code ocaml> <code ocaml>
 let rec parity = function let rec parity = function
   | [] -> []   | [] -> []
-  | x::-> (x mod 2 == 0)::(func t);;+  | x::-> (x mod 2 == 0)::(parity l);;
 val func : int list -> bool list = <fun> val func : int list -> bool list = <fun>
  
Line 25: Line 74:
 </code> </code>
  
 +===== Ackermann =====
 <code ocaml> <code ocaml>
 let rec ackermann x y = match (x,y) with let rec ackermann x y = match (x,y) with
Line 32: Line 82:
 </code> </code>
  
 +==== Equivalent in Python ====
 +<code python>
 +def ackermann(m, n):
 +    if m == 0:
 +        return n + 1
 +    elif n == 0:
 +        return ackermann(m - 1, 1)
 +    else:
 +        return ackermann(m - 1, ackermann(m, n - 1))
 +</code>
 +
 +===== Factorielle =====
 <code ocaml> <code ocaml>
 let rec factorielle = function let rec factorielle = function
cs_lang/ocaml.1310455842.txt.gz · Last modified: 2011/07/12 09:30 by cedric