Browse thread
[Caml-list] Question
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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