4.4. Funkce error

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.