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
[Caml-list] variant with tuple arg in pattern match?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Daniel de Rauglaudre <daniel.de_rauglaudre@i...>
Subject: Re: [Caml-list] variant with tuple arg in pattern match?

My opinion is that the confusion comes from the syntax. In my revised syntax
by Camlp4, I propose to represent constructors with several parameters with
currification syntax. You can write:

     type t1 = [ Foo of int and int ]    to specify two parameters
     type t2 = [ Bar of (int * int) ]    to specify one parameter, a tuple

And you (must) write:
    Foo 3 5
    Bar (3, 5)

The case:
    Foo 3
    The constructor Foo expects 2 argument(s),
    but is here applied to 1 argument(s)
which is normal.

Idem for the case:
   match x with [ Foo y -> y ]

To get the couple, you have to write:
   match x with [ Foo y z -> (y, z) ]

This is logical. With this syntax, no possible confusion. You would
even not have asked the question.

It is not a question of semantics, but a question of *syntax*.

To unsubscribe, mail  Archives: