Re: New PAKCS release (Version 1.8.0)

From: Wolfgang Lux <>
Date: Fri, 30 Mar 2007 15:00:41 +0200

Emilio Jesús Gallego Arias wrote:

> WRT Sloth operational behavior, what it does is simple common
> expression elimination, so for the coin case you get
> (coin,coin) is transformed to let M = coin in (M, M)

I see. However, the above transformation is not valid in Curry --
at least in the general case. Just replace coin in the definition
above by the Prelude function
   unknown = x where x free
Now, for (unknown,unknown) you get to distinct variables, whereas
for let M = unknown in (M,M) you get only one.

> It is similar memoization, but just a hack and it doesn't work in a
> lot of cases due to eta-expansion and so on. Also it has other side
> effects, think of the infamous mono-morphism restriction.
> Let's think for a moment that coin could be automatically transformed
> to
> coin = [0,1]
> so then, in any sane semantics (both operational or denotational) the
> equation
> let x = coin in (x,x) == (coin,coin)
> does hold. This is the kind of treatment I'd like to have. I'm sorry I
> haven't fully developed it yet.

You could perform determinism analysis in order to apply your
transformation iff the expressions involved are determinstic.


curry mailing list
Received on Mi Apr 11 2007 - 11:56:08 CEST

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