Hans Aberg haberg at math.su.se
Thu Apr 3 04:51:18 EDT 2008

```On 3 Apr 2008, at 08:07, Henning Thielemann wrote:
>> Show could be implemented by writing out the function closures,
>> but I think the reason it is not there is that it would create
>
> It would also not give referential transparent answers, because the
> same function can be implemented in different ways:

You can define scalars as constant functions, making the set of
functions into a ring, and then implicit multiplication would not
work. The way I view implicit multiplication though, is as an
abbreviation of the explicit multiplication. So from that point of
view, it is no stranger than other notational simplifications that
may or may not take place, for example the use of parenthesizes.

So if one defines scalars as constants, one will have accept that
implicit multiplication cannot take place. But that should not be a
problem in Haskell, as it does not admit that anyway: one knows that x
(y) always is function application.

Anyway, in math, the context may change. So sometimes it may be
useful to let a number r denote a constant function, but if r is in a
ring R, the it may be useful to let it denote the function that is
multiplication of r.

Now in a computer language, the problem is to avoid setting one such
possibility in stone at fundamental level so that by that it excludes
the other variations.

Hans

```