Hi -
I've got the following function which doesn't compile:

 createMonoMultiFont
     :: (MonadException m, Enum i, Bounded i)
     => [(i, Font, Colour)] -> m (MonoMultiFont i)
 createMonoMultiFont elements =
     liftIO . block $ do
          mmfRaw <- duma_MonoMultiFont_create (fromEnum (maxBound::i))
          mmfPtr <- newForeignPtr duma_MonoMultiFont_Release mmfRaw
          return $ MonoMultiFont mmfPtr

The problem is that ghc complains that there is no instance for Bounded i even though I've written "Bounded i" in the type declaration for the function.

I was expecting that I could use the same type variables in the function body as in the type signature so that I could use maxBound::i to find the max bound of whatever type is instantiated to i.

What am I doing wrong here, and is it possible to create such a  function?

Thanks, Brian.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to