Local evidence and type class instances

2010-10-16 Thread Max Bolingbroke
Hi GHC users, 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

Fwd: Local evidence and type class instances

2010-10-16 Thread Antoine Latter
Forwarding to list. -- Forwarded message -- From: Antoine Latter aslat...@gmail.com Date: Sat, Oct 16, 2010 at 9:47 AM Subject: Re: Local evidence and type class instances To: Max Bolingbroke batterseapo...@hotmail.com On Sat, Oct 16, 2010 at 7:11 AM, Max Bolingbroke

Re: Local evidence and type class instances

2010-10-16 Thread Antoine Latter
On Sat, Oct 16, 2010 at 7:11 AM, Max Bolingbroke batterseapo...@hotmail.com wrote: Hi GHC users, 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

Re: Local evidence and type class instances

2010-10-16 Thread Max Bolingbroke
HI Antoine, I didn't know UHC already had this - thanks for the pointer! It seems they have read about implicit configurations too, as the example they use is very similar to the paper. In fact, they also have another extension to the concept that I was intentionally avoiding mentioning - they

Re: Local evidence and type class instances

2010-10-16 Thread Antoine Latter
On Sat, Oct 16, 2010 at 11:41 AM, Max Bolingbroke batterseapo...@hotmail.com wrote: On 16 October 2010 15:47, Antoine Latter aslat...@gmail.com wrote: Substituting f for f' in this example will change the meaning of the operation significantly, which is, in my mind, hard to explain and reason

Re: un-used record wildcards

2010-10-16 Thread Neil Mitchell
Hi Simon, I've seen this issue with GHC 6.12.3 (and assumed it was by design). It occurs with a slight modification of your example: {-# LANGUAGE RecordWildCards #-} module Test where data T = MkT { f,g :: Int } p x = let MkT{..} = x in f This example warns about Defined but not used: `g' on