´ Ecole Polytechnique INF549
A Short Introduction to OCaml
Jean-Christophe Filliˆ atre September 11, 2018
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 1 / 102
A Short Introduction to OCaml Jean-Christophe Filli atre September - - PowerPoint PPT Presentation
Ecole Polytechnique INF549 A Short Introduction to OCaml Jean-Christophe Filli atre September 11, 2018 Jean-Christophe Filli atre A Short Introduction to OCaml INF549 1 / 102 overview lecture Jean-Christophe Filli atre labs
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 1 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 2 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 3 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 4 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 5 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 5 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 5 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 6 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 6 / 102
1 necessarily initialized 2 type not declared but inferred 3 cannot be assigned
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 7 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 8 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 8 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 9 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 9 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 9 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 9 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 10 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 10 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 10 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 11 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 11 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 11 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 12 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 12 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 12 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 13 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 14 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 15 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 16 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 17 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 17 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 17 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 17 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 18 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 19 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 19 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 19 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 19 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 20 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 20 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 21 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 21 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 22 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 22 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 23 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 23 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 24 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 24 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 25 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 26 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 27 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 28 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 28 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 29 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 29 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 30 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 30 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 31 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 31 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 32 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 32 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 33 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 34 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 35 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 35 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 36 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 36 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 37 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 38 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 39 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 40 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 40 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 40 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 41 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 41 / 102
Java OCaml class T { type t = { final int v; boolean b; v: int; T(int v, boolean b) { mutable b: bool; this.v = v; this.b = b; } } } T r = new T(42, true); let r = { v = 42; b = true } r.b = false; r.b <- false r.v r.v
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 42 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 43 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 43 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 43 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 44 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 44 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 45 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 45 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 46 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 47 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 47 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 47 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 48 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 49 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 49 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 49 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 49 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 50 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 51 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 52 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 53 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 54 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 54 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 55 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 56 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 57 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 58 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 59 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 60 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 61 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 61 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 61 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 62 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 63 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 64 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 65 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 65 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 65 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 65 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 65 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 66 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 66 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 66 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 66 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 67 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 67 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 67 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 67 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 68 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 68 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 69 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 69 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 69 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 70 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 70 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 70 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 70 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 71 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 72 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 72 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 73 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 74 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 75 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 76 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 76 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 76 / 102
Java OCaml interface HashedType<T> { module type HashedType = sig type elt int hash(); val hash: elt -> int boolean eq(T x); val eq: elt -> elt -> bool } end class HashTable module HashTable(E: HashedType) = <E extends HashedType<E>> { struct ... ...
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 77 / 102
1 data structures parameterized with other data structures
Hashtbl.Make : hash tables Set.Make : finite sets implemented with balanced trees Map.Make : finite maps implemented with balanced trees
2 algorithms parameterized with data structures Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 78 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 79 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 80 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 81 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 82 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 83 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 84 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 84 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 84 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 85 / 102
12 20 12 20 42
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 86 / 102
1 correctness of programs
code is simpler mathematical reasoning is possible
2 easy to perform backtracking
search algorithms symbolic manipulation and scopes error recovery
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 87 / 102
1 correctness of programs
code is simpler mathematical reasoning is possible
2 easy to perform backtracking
search algorithms symbolic manipulation and scopes error recovery
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 87 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 88 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 88 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 88 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 89 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 90 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 91 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 92 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 92 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 93 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 93 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 93 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 94 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 95 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 95 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 95 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 95 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 96 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 97 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 98 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 99 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 100 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 101 / 102
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 101 / 102
in OCaml: List, Set, Map
Jean-Christophe Filliˆ atre A Short Introduction to OCaml INF549 102 / 102