[Haskell-cafe] exceptions vs. Either
MR K P SCHUPKE
k.schupke at imperial.ac.uk
Tue Aug 3 10:28:19 EDT 2004
>f (case xs of (x:_) -> x;  -> error "whoops") -- direct style
Yup, this is how I do it... I never use head!
I like to pass failures back up to the level where some kind of sensible
error message can be generated. In your example the error is no
better than with 'head' - the point is a Nothing can be 'caught'
outside of an IO monad.
I would suggest using the type system as I said earlier so:
toNonEmptyList :: [a] -> Maybe (NonEmpty a)
toNonEmptyList (a0:_) = Just (NonEmpty a)
toNonEmptyList _ = Nothing
Then redefine head:
head :: NonEmpty a -> a
head (NonEmpty (a0:_)) = a0
More information about the Haskell-Cafe