Крайне напрягает необходимость писать вот такие нагромождения вручную (по 3 штуки для каждого конструктора).
Между тем, подобные названия функций - это уже стандарт де-факто. Может есть какой-нибудь способ заставить GHC это делать автоматически?
isApple (Apple _) = True
isApple _ = False
getApple (Apple t) = t
getApple _ = error("Not an Apple")
fromApple (Apple t) = Just t
fromApple _ = Nothing