Haskell má zabudovanou funkci error, jejíž typ je String->a. Je to docela podivná funkce, která vypadá jako by vracela nějakou polymorfní hodnotu, o které ale nic nevíme. Ve skutečnosti se tato funkce po svém zavolání již nevrátí, takže na typu její návratové hodnoty nezáleží a jeho obecnost je nutná jen pro to, aby byla dodržena pravidla typové kontroly ve výrazy, kde funkci error použijeme.
Funkce error je užitečná v situacích, kdy chceme způsobit chybové ukončení výpočtu a textovým řetězcem předat uživateli informaci o chybě. Takže například definice funkce head, která vrací první prvek seznamu, ve skutečnosti vypadá takto:
head (x:xs) = x head [] = error "head{PreludeList}: head []"V případě, že funkci head zavoláme na prázdný seznam, uplatní se druhá definiční rovnost a výpočet se ukončí s uvedenou chybovou zprávou.