I wrote:
Patterns are rigid or flexible and have fall-through or non-deterministic
> semantics in presence of overlapping rules. The current situation mixes
> these aspects.
>
I realize that these aspects are not as independent as I thought.
Fall-through pattern matching called on a free variable would always pick
the first rule which seems of questionable utility.
I support overlapping case expressions with non-deterministic semantics but
would like to avoid the name 'fcase' in favor of 'cases'. So
coin = cases () of _ -> 0; _ -> 1
would be a possible implementation of (0?1).
I thought about a generalization of the proposal for undeclared free
variables. In addition to allowing anonymous free variables written as _ one
could treat every identifier that starts with an underscore and is not in
scope as if it was a free variable implicitly declared using a where clause.
For example
half n | n =:= add _m _m = _m
would be a valid definition. However, currently identifiers are not allowed
to start with an underscore. Why not? I guess the reason must be
Curry-specific (Haskell allows such identifiers).
Sebastian
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Fr Jan 28 2011 - 16:57:01 CET