Curry Report Vers. 0.6

From: Michael Hanus <>
Date: Fri, 22 Oct 1999 12:45:58 +0200 (MET DST)

Dear Colleagues,

I'd like to inform you that I have updated the Curry report.
Most of the changes are minor (see the short summary of
all changes at the end of this email). The two major changes

1. Module system: Due to a suggestion of Wolfgang Lux, I modified
   its definition so that it is almost compatible with Haskell.
   In particular, renaming is replaced by qualification and hiding.

2. Local declarations (let/where): Nothing has been changed but I
   provided a precise definition of the meaning of local declarations
   by adding in Appendix D a section about the elimination of
   local declarations. Note that the exact meaning of local
   declarations is relevant since Curry has a distinction between
   variables (i.e., arguments of functions which are shared)
   and functions (which are not shared).

As usual, you can find the new version via the Curry homepage
or directly at
Comments are welcome!

You might be interested to have a look at the Curry web pages,
where I have recently updated. In particular, I extended the page about
papers related to Curry. Please let me know if you have
some further contributions.

Best regards,



Changes to the version of January 13, 1999:

- Section 2.6: Footnote about instantiation of unbound functional variables

- Section 4.2: Typing rules for existentials and defining equations

- Section 5: Definition of module system changed so that it is
  almost compatible with Haskell (e.g., renaming is replaced by
  qualification and hiding)

- Section 10: Command ":type" shows the type of an expression instead
  of a function

- Appendix B: standard prelude extended (const, /=, lines, unlines,
  either, maybe,...)

- Syntax: bugs w.r.t. infix operators and unary minus corrected

- Syntax: module syntax slightly changed, list of keywords updated
  Changes: qualified infix operators allowed, renaming is replaced by
  qualification and hiding

- Appendix D: "pattern" replaced by "call pattern" to avoid confusion
  with patterns in the syntax of Curry (which are defined as expressions
  without defined functions).

- Typo in Figure 3 corrected.

- Section 2.2.1 and Appendix D.2: Explanation of sharing made more precise.

- Appendix D: Section about the elimination of local declarations (let/where)
  included. This lifting of local declarations is necessary to
  explain the operational semantics and the type system of the
  entire language. Concrete implementations are free to choose
  other techniques if they are conform with this specification.

Received on Fr Okt 22 1999 - 12:55:36 CEST

This archive was generated by hypermail 2.3.0 : Do Jun 20 2024 - 07:15:06 CEST