Hello, > Now that the Glorious New type checker can handle local evidence > seamlessly, is it a big implementation burden to extend it to deal > with local *type class instances* in addition to local *equality > constraints*? > > For example, you could write this: > > """ > f :: Bool > f = id < id > where > instance Ord (a -> b) where > _ `compare` _ = LT > """
I dislike the fact that you can produce incoherent instances with that extension. How about a restricted version that only works on fresh types? f :: Bool -> Bool f b = N id < N id where -- N is a fresh type, unique to a particular application of f. newtype N = N (a -> b) instance Ord N where _ `compare` _ = LT This is sufficient for implicit configurations, and avoids the overlap of the new instances with existing instances. I don't know how much extra burden local type definitions like these would add. Bertram _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users