Personal tools

Hask

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
Line 26: Line 26:
 
{{stub}}
 
{{stub}}
 
[[Category:Mathematics]]
 
[[Category:Mathematics]]
  +
[[Category:Theoretical foundations]]

Revision as of 23:59, 17 November 2009

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.