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 :
-
x : int = 10,
- y : int = 20 et
- un_point : point = {abs = 10 ; ord = 20}
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 ;;