[Haskell-cafe] "show" for functional types

Claus Reinke claus.reinke at talk21.com
Sat Apr 1 13:57:32 EST 2006

> However there is nothing in the functions themselves that restricts their 
> use to just T Double. Thus the functions can be compared for equality by 
> supplying an argument of type T Double but used elsewhere in the program 
> with args of type (plain) Double eg:
> Thus we can determine that f is implemented by different code from g (The 
> example would be even more convincing if Int's were used instead of 
> Double's) and so f and g are not interchangeable.

if you have two functions f and g, and an argument applied to which they 
deliver different results, then the functions can hardly be equal, can they?
if they are not equal, what makes you think they should be interchangeable?
>> ... nothing prevents us from defining that instance in such a way that we 
>> construct a
>> representaton instead of doing any additions.
> Thus referential transparency of polymorphic functions is foiled.

polymorphic functions (as in: parametrically polymorphic) do not allow 
such tricks. overloaded expressions are interpreted as functions from 
type information to non-overloaded expressions, so you have to take 
that type information into account when comparing or exchanging the 
expressions. in particular, an overloaded expression instantiated at a
particular type is not the same as the overloaded expression itself.

btw, you'll notice that I avoid the use of terms like rt - there are too
many non-equivalent interpretations of such terms flying around, so
it is better to define what it is you're talking about (try this for one
study of the many definitions [scanned paper - >3MB]:
http://www.dina.kvl.dk/~sestoft/papers/SondergaardSestoft1990.pdf ).


More information about the Haskell-Cafe mailing list