Hask

From HaskellWiki
Revision as of 04:29, 13 November 2009 by F.s. (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hask is the name usually given to the category having Haskell types as objects and Haskell functions between them as morphisms.

A type-constructor that is an instance of the Functor class is an endofunctor on Hask.

A solution approach to the issue of partiality making many of the identities required by categorical constructions not literally true in Haskell:


The seq problem

The right identity law fails in Hask if we distinguish values which can be distinguished by seq, since:

id . undefined = \x -> id (undefined x) = \x -> undefined x

should be equal to undefined, but can be distinguished from it using seq:

   ghci> (undefined :: Int -> Int) `seq` ()
   * Exception: Prelude.undefined
   ghci> (id . undefined :: Int -> Int) `seq` ()
   ()

This article is a stub. You can help by expanding it.