[Haskell-cafe] "show" for functional types
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]:
More information about the Haskell-Cafe