i assume 7.6 and 7.8, if we're talking GHC rather than GCC :)

in 7.8 you can't define userland typeable instances, you need only write deriving (Typeable) and you're all set. 
add some CPP to select the instances suitable


On Tue, Aug 5, 2014 at 12:41 PM, Volker Wysk <verteiler@volker-wysk.de> wrote:

Hi!

I've been working with GHC-4.6.3, and updating to GHC-4.8.3 breaks my code, 

because the Typeable class has been changed. The compiler produces this 

message:

---------

src/HsShellScript/ProcErr.chs:2294:4:

    ‘typeOf’ is not a (visible) method of class ‘Typeable’

---------

I want to define System.Posix.Process.ProcessStatus to be an instance of 

Typeable, so I can throw and catch it as an exception. ProcessStatus isn't 

typeable by default.

Is it still possible to make ProcessStatus a member of Typeable? How? 

Obviously, you can't accomplish it by deriving Typeable, because the definition 

can't be changed any longer.

This is the spot in question:

----------

import System.Posix.Process

import Data.Typeable

{-

data ProcessStatus = Exited ExitCode

                   | Terminated Signal

                   | Stopped Signal

                   deriving (Eq, Ord, Show)

-}

instance Typeable ProcessStatus where

   typeOf = const tyCon_ProcessStatus

tyCon_ProcessStatus = mkTyConApp (mkTyCon3 "hsshellscript"

                                           "HsShellScript.ProcErr"

                                           "Posix.ProcessStatus") []

instance Exception ProcessStatus

----------

Thanks,

V.W.


_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users