Old code broken by new Typeable class
Carter Schonwald
carter.schonwald at gmail.com
Tue Aug 5 16:46:23 UTC 2014
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 at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20140805/2dd81cd2/attachment-0001.html>
More information about the Glasgow-haskell-users
mailing list