Introduction to Functional Programming Using OCaml
Romain Bardou July 6, 2011
Introduction to Functional Programming Using OCaml 1 / 50
Introduction to Functional Programming Using OCaml Romain Bardou - - PowerPoint PPT Presentation
Introduction to Functional Programming Using OCaml Romain Bardou July 6, 2011 Introduction to Functional Programming Using OCaml 1 / 50 Introduction There are two ways to write error-free programs; only the third one works. Alan J.
Introduction to Functional Programming Using OCaml 1 / 50
Introduction to Functional Programming Using OCaml 2 / 50
Introduction to Functional Programming Using OCaml 3 / 50
◮ invariants about variables ◮ design intents of the programmer
◮ some variable x always contains an integer ◮ some variable l always contains a list ◮ some variable l′ always contains a list of integers
◮ inserting a value into an integer (instead of a list) ◮ adding two lists together
Introduction to Functional Programming Using OCaml 4 / 50
Introduction to Functional Programming Using OCaml 5 / 50
Introduction to Functional Programming Using OCaml 6 / 50
Introduction to Functional Programming Using OCaml 7 / 50
Introduction to Functional Programming Using OCaml 8 / 50
Introduction to Functional Programming Using OCaml 9 / 50
Introduction to Functional Programming Using OCaml 10 / 50
Introduction to Functional Programming Using OCaml 11 / 50
Introduction to Functional Programming Using OCaml 12 / 50
Introduction to Functional Programming Using OCaml 13 / 50
Introduction to Functional Programming Using OCaml 14 / 50
Introduction to Functional Programming Using OCaml 15 / 50
Introduction to Functional Programming Using OCaml 16 / 50
Introduction to Functional Programming Using OCaml 17 / 50
Introduction to Functional Programming Using OCaml 18 / 50
Introduction to Functional Programming Using OCaml 19 / 50
Introduction to Functional Programming Using OCaml 20 / 50
Introduction to Functional Programming Using OCaml 21 / 50
Introduction to Functional Programming Using OCaml 22 / 50
Introduction to Functional Programming Using OCaml 23 / 50
Introduction to Functional Programming Using OCaml 24 / 50
Introduction to Functional Programming Using OCaml 25 / 50
Introduction to Functional Programming Using OCaml 26 / 50
i=1i with a while loop
Introduction to Functional Programming Using OCaml 27 / 50
i=1i with a for loop
Introduction to Functional Programming Using OCaml 28 / 50
Introduction to Functional Programming Using OCaml 29 / 50
Introduction to Functional Programming Using OCaml 30 / 50
i=1i
Introduction to Functional Programming Using OCaml 31 / 50
Introduction to Functional Programming Using OCaml 32 / 50
◮ no side-effects (i.e. pure programs) ◮ strict but rich type system ◮ no goto (gotos are evil) ◮ functions are values
Introduction to Functional Programming Using OCaml 33 / 50
i=1i using the functional approach
Introduction to Functional Programming Using OCaml 34 / 50
i=1i using the functional approach, again
Introduction to Functional Programming Using OCaml 35 / 50
Introduction to Functional Programming Using OCaml 36 / 50
Introduction to Functional Programming Using OCaml 37 / 50
Introduction to Functional Programming Using OCaml 38 / 50
Introduction to Functional Programming Using OCaml 39 / 50
Introduction to Functional Programming Using OCaml 40 / 50
Introduction to Functional Programming Using OCaml 41 / 50
Introduction to Functional Programming Using OCaml 42 / 50
i=1i using the functional approach, again again
Introduction to Functional Programming Using OCaml 43 / 50
i=1i using the functional approach, again again again
Introduction to Functional Programming Using OCaml 44 / 50
◮ integer multiplication * for integer matrices ◮ float multiplication *. for float matrices ◮ other operators for other algebras
Introduction to Functional Programming Using OCaml 45 / 50
◮ modular ◮ good compositional properties ◮ closer to a well-known language: mathematics ◮ less error-prone
Introduction to Functional Programming Using OCaml 46 / 50
Introduction to Functional Programming Using OCaml 47 / 50
◮ various integers
◮ int
31 bits (32-bits processors) or 63 bits (64-bits processors) default integers of OCaml, fast
◮ int32, int64
less efficient, but one more bit
◮ arbitrary precision integers (modules Num and Big_int)
◮ floats
◮ large arrays (module Bigarray) of various integers and floats;
Introduction to Functional Programming Using OCaml 48 / 50
◮ less error-prone ◮ concise ◮ expressive (algebraic types, objects, modules and functors,
◮ scalable (modular, compositional) ◮ maintainable ◮ fast to compile ◮ fast to execute
◮ young (less available libraries and tools)
Introduction to Functional Programming Using OCaml 49 / 50
Introduction to Functional Programming Using OCaml 50 / 50