Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: [Caml-list] Matching when
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Luc Maranget <luc.maranget@i...>
Subject: Re: [Caml-list] Matching when
> 
> Hi !
> 
> I was thinking that the following should be possible :
> 
> match e with
> | Any
> | Int x when x > 0 ->
>         .... (* here we don't use x *)
> | ....
> 
> But the typechecker reject it because of the unbound 'x' in the "Any"
> matching.
> I don't know what kind of difficulty this modification require, but it would
> be nice if the compiler was able to resolve such cases.
> 
> :-)
> Nicolas Cannasse
> 

Hello,

This has already been discussed.
The modifications required are important and probably not worth the
trouble.

More precisely the guard ``when expression'' is not part of patterns but rather
part of clauses.

That is your example is to to be parsed as
 Any | Int x <-- pattern                \
 when x > 0   <-- guard                 | clause
 ->                                     |
  ...         <-- right hand side       /

What you are asking is ``pattern when expression'' to be a pattern.
Then your example would be parsed as

That is your example is to to be parsed as
 Any              <-- pattern   | 
|                               | Pattern (or pat)
 Int x when x > 0 <-- pattern   |
->
  ...             <-- right hand side


Modifications are really important because this would make patterns and
expression mutually recursive, which they are not at the moment.



--Luc
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners