Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
pattern matching and records vs tuples
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2009-04-14 (14:13)
From: Yoann Padioleau <padator@w...>
Subject: pattern matching and records vs tuples


I've found that while records provide advantages over tuples, 
they also have disadvantages when it comes to evolution issues. 
If I decide to evolve code using a tuple type, for instance adding
new information and so extend a 4-uple in a 5-uple, then the compiler
will tell me all the places that I need to update, which is good.
If I use records instead, and have 4 fields, and I want to add again
some new information in a new field, then the way the compiler works
right now will not help me at all. E.g with this code 

  type record = { 
    field1: int;
    field2: int;
  let foo = function 
   { field1 = v1; field2 = v2 } -> ...

If I extend record with a new field   field3, then ocaml will
not warn me and tell me to modify also the 'foo' function :(

So, would it be possible to extend the ocaml compiler with a simple
feature that let the programmer tell the compiler when he use 
an "exhaustive" pattern with record, e.g.

 let foo = function
 { field1 = v1; field2 = v2; NOTHING_ELSE} -> 

(the inverse of a '...')