David Sabel
Wed, 23 Apr 2003 23:58:28 +0200

I have some questions about the eta-expansion, which
is perfomed in the simplifier.

I found in [1], that the transformation "eta-expansion"
is of the form

v = \a1 ... an -> f a1 ... an
 ===>    v = \a1 ... am -> f a1 ... an

assuming f has arity m > n.

arity is something like "how many arguments can be applied, without
perfoming work"

My questions:
1) How do you compute this arity.
2) What's the expression f in the general rule, is it a variable or
   a term, or could it be both?

In the same paper is the case-eta-expansion, but I don't understand
the correctness of this transformation:

case e of {p1 -> e1,...,pn -> en}
===> \y -> case e of {p1 -> e1 y, ..., pn -> en y}

The rhs is a WHNF, but the lhs isn't, so the rule
can't be correct in general. For example, assume that e is bot.


[1] André Santos,
    Compilation by Transformation in Non-Strict Functional Languages,
    PhD thesis, TR-1995-17,
    Department of Computing Science, University of Glasgow, 1995.

David Sabel
JWGU Frankfurt