English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] Question
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-12-10 (16:54)
From: skaller <skaller@o...>
Subject: Re: [Caml-list] Question
On Wed, 2003-12-10 at 21:27, Pierre Weis wrote:
> [...]
> >  I was expecting "when" to be right distributive over "|". I find
> > OCaml's behaviour not very intuitive in such a situation.
> [...]
> The when construct introduces a guard to a pattern matching
> clause. This means that a when construct is global to the entire
> pattern of the clause it appears in; it means in particular that no
> when construct can be nested into a pattern and the question of its
> distributivity wrt any other construct is pointless.
> >  Is there a good reason for this?
> Yes: simplicity, complexity invariants preservation for runtime
> pattern analysis decisions even in the presence of when clauses,
> easier understanding of the compiler warnings, simplicity and
> well-definedness semantics (in particular the desired invariance wrt
> the order of evaluation).

Whoa! Can you say that slower? Felix allows nested when clauses
in patterns (however it doesn't allow alternatives yet). 
The current implementation is unoptimised, 
I just evaluate the match of each pattern in turn until one matches.

One small difference .. the argument of a when clause is
an expression .. and felix expressions are purely functional
so there is no issue of order of evaluation changing anything.

So, what have I lost?

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