Thanks this was helpful. In many of Conal Elliot's writings I see that he shows that his semantic function is a natural transformation. Is that just basically showing the polymorphic nature of his semantic functions, or are there other benifits you get by showing a particular function is a natural transformation? Daryoush On Thu, Apr 23, 2009 at 12:34 PM, Dan Doel <dan.doel@gmail.com> wrote:
On Thursday 23 April 2009 2:44:48 pm Daryoush Mehrtash wrote:
Thanks for this example I get the point now. (at least i think i do :) )
One more question.... This all being on the same category then the functor transformation can also be view as a simple morphism too. In this example the listToMaybe can be viewed as morphism between list and Maybe types that are both in the Hask categroy too. right? If so then what would viewing the morphism as natural transformation by you?
listToMaybe in general wouldn't be a morphism in the category, because morphisms would be from concrete types to other concrete types. [1] So, if you'll excuse some notation I just made up (with a little help from GHC core notation :)):
listToMaybe@Int :: [Int] -> Maybe Int listToMaybe@Char :: [Char] -> Maybe Char listToMaybe@String :: [String] -> Maybe String
are all morphisms in the alleged Hask category. Each polymorphic function (similar to the above one, at least) defines a family of morphisms like that. *But*, that's what a natural transformation is: a family of morphisms, one for each object in the category, that commute with functor application in a certain way. Thus, one can look at the fully polymorphic listToMaybe as a natural transformation:
listToMaybe :: [] -> Maybe
-- Dan
[1] Maybe you could make up a category where polymorphic types are objects as well, but that doesn't seem to be the way people typically go about applying category theory to Haskell. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe