caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Pattern matching of records
@ 2015-09-16 12:19 Leonardo Laguna Ruiz
  2015-09-16 12:26 ` Nicolas Ojeda Bar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Leonardo Laguna Ruiz @ 2015-09-16 12:19 UTC (permalink / raw)
  To: caml-list


I have the following type

(* File: S.ml *)
module S = struct
    type s =
       {
          a : int;
          b : int;
       }
end


I I have found that for creating records I can do as follows:

(* File: main.ml *)
open S
let s0 = S.{ a = 0; b = 0}


However this does not work for pattern matching:

(* this does not work *)
match s0 with
| S.{ a = 0 ; b = 0 } -> true
| _ -> false


These two alternatives work, but one with a warning and the other 
(depending on the type) is too verbose:

(* this produces a warning *)
match s0 with
| { a = 0 ; b = 0 } -> true
| _ -> false

(* this works *)
match s0 with
| { S.a = 0 ; S.b = 0 } -> true
| _ -> false


Is there any other way of writing pattern matches as compact as S.{ a = 
0 ; b = 0 } ? (which is consistent to the construction of the same value)

I know that it's possible to do:

let open S in
match s0 with
| { a = 0 ; b = 0 } -> true
| _ -> false

but the main reason I don't do it is because I have more records like:

match s0,k0 with
| { S.a = 0 }, {K.a = 0 } -> true



Best regards,

Leonardo



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-09-16 19:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-16 12:19 [Caml-list] Pattern matching of records Leonardo Laguna Ruiz
2015-09-16 12:26 ` Nicolas Ojeda Bar
2015-09-16 12:26 ` Thibault Suzanne
2015-09-16 12:28   ` Leonardo Laguna Ruiz
2015-09-16 19:03 ` Gerd Stolpmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).