A nullary type class for partial functions
Use the Partial type class to track your partial functions. For example:
{-# LANGUAGE NullaryTypeClasses #-}
import Data.List.Partial
cadr :: (Partial) => [a] -> a
cadr = head . headAs an application developer, either opt into partial functions globally by declaring an instance of the Partial type class:
instance Partialor run partial functions selectively using the partial function:
ghci> partial $ cadr [1, 2, 3]
2