Update of the Curry report

From: Michael Hanus <mh_at_informatik.uni-kiel.de>
Date: Thu, 23 Aug 2012 12:53:20 +0200

Dear Colleagues,

after various discussions on syntactical extensions of Curry
via this mailing list, I summarized the proposals in an
update of the Curry report. Before making this update
"official", you can look into the updated report at

http://www.informatik.uni-kiel.de/~curry/papers/report83.pdf

and send me (via this mailing list) any corrections/suggestions.
Here is a summary of the changes compared to the
previous version (0.8.2) of the report (where I also added
a reference to the discussions in the mailing list):

Section 2.3 (Function declarations):

- The restrictions on higher-order rules (i.e., which were
considered as syntactic sugar for eta expanded rules) has been
omitted (since eta expansion changes the sharing behavior).

See http://www.informatik.uni-kiel.de/~curry/listarchive/0497.html

As a consequence, it is explicitly mentioned that the different rules
defining a function must have the same number of arguments in
each left-hand side.

- Restrictions on linear left-hand sides in function definitions
removed, i.e., a function definition of the form

f x y x | c = e

is considered as syntactic sugar for

f x y z | x=:=z &> c = e

See the thread on syntax extensions ending in
http://www.informatik.uni-kiel.de/~curry/listarchive/0904.html

Section 2.5 (Free variables):

- Anonymous free variables are allowed in expressions.
Thus, an occurrence of "_" in an expression is an abbreviation
of "let x free in x".

See http://www.informatik.uni-kiel.de/~curry/listarchive/0895.html

New Section 5.4 (Flexible case expressions):

- fcase expressions for denoting flexible pattern matching
without explicitly introducing an auxiliary function added.
In general,
fcase e of { t1 | gd11 -> e11; ...; tn | gdn -> en }
is equivalent to
let f t1 | gd1 = e1; ...; f tn | gdn = en in f e
where is a some new function symbol.
Thus, fcase is now also a keyword (see Section C.1).

See: http://www.informatik.uni-kiel.de/~curry/listarchive/0897.html

Appendix B (Prelude):

- definition of failed changed to external function

Appendix D.7 (Eliminating local declarations):

- Semantics of left and right sections defined by:
(e `op`) = (\f x y -> f x y) (op) (e)
(`op` e) = (\f x y -> f y x) (op) (e)

See: http://www.informatik.uni-kiel.de/~curry/listarchive/0928.html

Best regards,

Michael
_______________________________________________
curry mailing list
curry_at_lists.RWTH-Aachen.DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/curry
Received on Do Aug 23 2012 - 12:54:44 CEST

This archive was generated by hypermail 2.3.0 : Do Jun 13 2024 - 07:15:12 CEST