Hi Volker, You can use this extension: http://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#stand-alone-deriving to write that orphan Typeable instance for most ghcs (probably 6.10 is the earliest).
It might be worth pushing for a Typeable instance to be added to the unix package (here: http://hackage.haskell.org/package/unix-2.7.0.1/docs/System-Posix-Process.html#t:ProcessStatus, with Carter's code): somebody else might define the same orphan instance too, which will break programs that end up seeing both instances. Regards, Adam On Tue, Aug 5, 2014 at 12:49 PM, Carter Schonwald <carter.schonw...@gmail.com> wrote: > more concretely > #if defined(__GLASGOW_HASKELL__) && ( __GLASGOW_HASKELL__ >= 707) > --- do the deriving version here > #else > --- your current stuff > #endif > > > On Tue, Aug 5, 2014 at 12:46 PM, Carter Schonwald > <carter.schonw...@gmail.com> wrote: >> >> 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 <vertei...@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 >>> >> > > > _______________________________________________ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://www.haskell.org/mailman/listinfo/glasgow-haskell-users > _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users