[Haskell-cafe] Problem trying to get class Bounded to work

Brian Hulley brianh at metamilk.com
Mon May 22 17:50:08 EDT 2006

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

      :: (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 

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. 

More information about the Haskell-Cafe mailing list