Dear Colleagues,
I'd like to propose two slight syntax extensions to the current definition
of Curry that I found useful to make programs more readable
from my practical experiences.
1. Anonymous free variables: allow anonymous variables of the form "_"
(underscore) in arbitrary expressions. Currently, anonymous variables
are only allowed in patterns but not as free variables in right-hand
sides or condition of rules. This has the drawback that they
must be explicitly declared or one has to use the Prelude
operation "unknown". Both is not nicely readable if one has
several unknown arguments to some operation f:
let a,b,c,d,e free in f x a b c d e
or
f x unknown unknown unknown unknown unknown
With the proposed extension, one can simply write "f x _ _ _ _ _"
Thus, an occurrence of "_" in an expression is syntactic sugar
for "let x free in x" (or the operation Prelude.unknown).
2. Non-linear patterns in function declarations: allow multiple occurences
of a same variable in left-hand sides of function declarations.
Such occurrences are syntactic sugar for equational constraints,
i.e., a rule like "f x y (C x) = rhs" is syntactic sugar for
"f x y (C z) | x=:=z = rhs" where z is a fresh variable.
This extension avoids a restriction in Curry compared to logic programming.
Moreover, the linearity condition does not make much sense
in the light of other useful extensions like functional patterns.
Finally, I don't see what is really gained by the linearity restriction.
I am interested to get some feedback on this proposal.
Best regards,
Michael
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Mi Jan 05 2011 - 11:04:45 CET