module Aula21 where -- transformações naturais safeHead :: [a] -> Maybe a safeHead [] = Nothing safeHead (cab:corpo) = Just cab -- "safeHead é natural" significa -- [], Maybe :: Hask -> Hask -- para cada t objeto de Hask (tipo), temos safeHead "de t" :: [t] -> Maybe t -- satisfazendo "naturalidade": safeHead . fmap f = fmap f . safeHead