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:
- Nils A. Danielsson, John Hughes, Patrik Jansson, and Jeremy Gibbons. Fast and loose reasoning is morally correct.
The seq problem
The right identity law fails in Hask if we distinguish values which can be distinguished by
id . undefined = \x -> id (undefined x) = \x -> undefined x
should be equal to
undefined, but can be distinguished from it using
(undefined :: Int -> Int) `seq` ()* Exception: Prelude.undefined ghci>
(id . undefined :: Int -> Int) `seq` ()()
This article is a stub. You can help by expanding it.