Deprecate an instance
Jon Fairbairn
Jon.Fairbairn at cl.cam.ac.uk
Fri May 20 13:21:25 EDT 2005
Would it be possible to extend the DEPRECATED pragma to
allow one to deprecate an instance of a class?
I was thinking about the recent discussion of APIs on
haskell-cafe, where Jérémy Bobbio complained about using
Booleans as arguments to libaray functions, preferring
instead sensibly named data constructors. It occurred to me
that by defining a class one could allow both the old
interface and a better one by using a class:
module Main where
-- suppose f used to be Bool -> Int -> Int, replace it
-- with this:
f :: Toggle t => t -> Int -> Int
f t x = case enabled t
of Invert -> -x
DontInvert -> x
data DoInvert = Invert | DontInvert
class Toggle t where
enabled :: t -> DoInvert
instance Toggle DoInvert where
enabled = id
instance Toggle Bool where
enabled True = Invert
enabled False = DontInvert
but for this to be any real use, we'd have to be able to
deprecate the /instance/ Toggle Bool.
--
Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk
More information about the Glasgow-haskell-users
mailing list