Précédent Index Suivant



Ordre supérieur


Sommer tous les éléments d'une liste ?
let rec somme = function l -> match l with
  | [] -> 0
  | h::r -> h + (somme r) ;;
Ici 0:int et (prefix +):int -> int -> int.
let rec somme_abs =
  function zero -> function plus -> function l ->
    match l with
      | [] -> zero
      | h::r -> 
        (plus h (somme_abs zero plus r)) ;;
On généralise zero: a et plus: b->a->a.
let somme = function l -> somme_abs 0 (prefix +) l;;
Pour tout environnement E si F est un identificateur (monomorphe) tel que

F -E-> F et si

(function x -> F(x)) -E-> G on a :

GºF dans le sens où

" x G(x) = F(x) et

function x -> F(x) Û F

let somme = somme_abs 0 (prefix +) ;;
let mult = somme_abs 1 (prefix *) ;;

Précédent Index Suivant