
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.