# Difference between revisions of "Hask"

From HaskellWiki

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.*