[Haskell-cafe] an idea for modifiyng data/newtype syntax: use `::=` instead of `=`

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Sat Aug 8 21:19:51 UTC 2015


On Sat, Aug 08, 2015 at 11:18:18PM +0200, MigMit wrote:
> 
> > On 08 Aug 2015, at 23:16, Tom Ellis <tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk> wrote:
> > 
> > On Sat, Aug 08, 2015 at 11:14:40PM +0200, MigMit wrote:
> >>> On 08 Aug 2015, at 23:11, Tom Ellis <tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk> wrote:
> >>> 
> >>> On Sat, Aug 08, 2015 at 11:02:27PM +0200, MigMit wrote:
> >>>> What you say is "if we don't use some perfectly legitimate language
> >>>> constructs and never use third-party code, than 'data' and 'newtype' are
> >>>> the same".
> >>> 
> >>> No, not at all.  I'm making a much stronger claim than that.  I'm claiming
> >>> the functionality provided by newtype is completely subsumed by that
> >>> provided by data.
> >> 
> >> Well, it's certainly unsupported by evidence. Because third-party code CAN
> >> distinguish between those.
> > 
> > OK, show me the code!
> 
> I did. You removed it when quoting.

Reinstating:

>> Prelude> newtype A = A Int deriving Show                                                                                           
>> Prelude> data B = B !Int deriving Show                                                                                             
>> Prelude> let x = case x of A n -> A 1 in x                                                                                         
>> A 1                                                                                                                                
>> Prelude> let y = case y of B n -> B 1 in y                                                                                         
>> *** Exception: <<loop>>                                                                                                            

This isn't third party code.  It knows about the constructors of A and B.


More information about the Haskell-Cafe mailing list