
On Jun 29, 2004, at 6:46 PM, Iavor S. Diatchki wrote:
In Haskell, natural transformations are polymorphic functions, tau :: f a -> g a. For example, maybeToList :: Maybe a -> [a].
actually i think this is a good approximation. not all polymorphic functions are natural transformations, but "simple" ones usually are.
I think you have it backwards, unless you are thinking of a more general notion of polymorphism than parametric polymorphism. Ad hoc polymorphic functions may or may not be natural; you have to verify the naturality condition in each case. But every parametrically polymorphic function is a natural transformation, though the converse fails: not every natural transformation is parametrically polymorphic. In particular, some natural transformations are generic functions (polytypic), and their components (instantiations at a type) are not all instances of a single algorithm. I'm not sure if every natural transformation on endofunctors on a category modelling a Haskell-like language is denoted by either a parametric or generic term. Regards, Frank