- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

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

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
: So Jan 26 2020 - 07:15:11 CET
*