[Haskell-cafe] Polymorphic function over pairs of maybes.

Jake McArthur jake.mcarthur at gmail.com
Tue Dec 28 20:32:48 CET 2010


Maybe something like this would work for you (requires the TypeFamilies 
extension).

     class FromMaybe a where
       type Maybe' a
       fromMaybe :: a -> Maybe' a -> a

     instance FromMaybe Int where
       type Maybe' Int = Maybe Int
       fromMaybe = Data.Maybe.fromMaybe

     instance FromMaybe String where
       type Maybe' String = Maybe String
       fromMaybe = Data.Maybe.fromMaybe

     instance (FromMaybe a, FromMaybe b) => FromMaybe (a, b) where
       type Maybe' (a, b) = (Maybe' a, Maybe' b)
       fromMaybe (x, y) (a, b) = (fromMaybe x a, fromMaybe y b)

- Jake McArthur



More information about the Haskell-Cafe mailing list