In response to my proposal
Michael Hanus <mh_at_informatik.uni-kiel.de> wrote:
> I agree that this could be annoying (in particular, since we
> have a module for Okasaki's red-black trees), but on the other
> hand, the proposed change has important consequences on the
> declarative flavor of Curry. In Curry, each equation defining
> a function has a true equational meaning: each subterm
> matching the left-hand side is replacable by the right-hand side.
> In Haskell, which has the proposed matching behavior, one could
> have a program containing
>
> ....
> f x = 2
>
> but the evaluation of (f 0) might return just 1 depending on
> rules written above, i.e., rules have no longer a "local"
> meaning by its own. However, I think that compositionality is important,
> i.e., the meaning of a function should be composed by its
> individual rules. If this is not the case, this should
> be clearly marked. I feel that an eval annotation is not
> enough since the other kind of eval annotations only
> influence the operational but not the declarative meaning
> of functions. To overcome this annoying situation,
But we already have eval choice in the language, which *does* change
the declarative meaning of the program.
> I would prefer to annotate the individual rules to make
> it explicit that this rule has not an equational meaning,
> for instance like in Juanjo's proposal for default rules as
>
> ...
> default f x = 2
I don't know Juanjo's proposal. How does it generalize to functions
with more than argument or nested arguments? For example, how is the
following Haskell function translated into a deterministic Curry
function with default rules?
data T = A | B | C | D
foo A _ = 0
foo _ A = 0
foo B _ = 1
foo _ B = 1
foo _ _ = 2
Regards
Wolfgang
--
Wolfgang Lux Phone: +49-251-83-38263
Institut fuer Wirtschaftinformatik FAX: +49-251-83-38259
Universitaet Muenster Email: wlux_at_uni-muenster.de
Received on Mo Okt 02 2000 - 08:42:37 CEST