Précédent Index Suivant



Liaison Caml-Light


La liaison permet de déstructurer des valeurs et d'introduire des identificateurs :

type point = {abs : int ; ord : int} ;;
let ({abs = x ; ord = y} as un_point) = 
  {abs = 10 ; ord = 20 } ;;
Introduit globalement trois nouveaux noms : il n'y a pas de calcul dans les parties gauches d'un let, ce sont des motifs lexicaux. Une telle liaison peut être mal typée ou échouer :
let (a,b) = (1,2,3) in a+b ;;
let (a,1) = (1,2) in a+1 ;;
let projection_verticale = function a_point -> 
  match a_point with
    {abs = x ; ord = y} ->
      if (y = 0) then a_point
      else {abs = x ; ord = 0};;
Le motif ``_'' (souligné) permet de déstructurer sans nommer.
let abscisse = function un_point ->
  match un_point 
    with {abs = x ; ord = _} -> x ;;

Précédent Index Suivant