Changes between Version 37 and Version 38 of Records


Ignore:
Timestamp:
Jan 16, 2012 9:55:48 AM (2 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Records

    v37 v38  
    3232== Solutions == 
    3333 
    34 So we have decided to avoid the extensible record debate, but how can we have multiple record field selectors in scope and correctly resolve the type of the record? 
     34So we have decided to avoid the extensible record debate, but how can we have multiple record field selectors in scope and correctly resolve the type of the record?  There are two main mechanisms on offer: 
     35 * '''Plan A''': Name spacing.  This uses qualified names to disambiguate record field names. 
     36 * '''Plan B''': Types.  This uses types to disambiguage record field names. 
    3537 
    36  1. Simple Overloaded Record Fields (SORF); see [wiki:Records/OverloadedRecordFields] 
    37  2. Frege-derived Records (FDR): simple name-spacing & plus type resolution; see [wiki:Records/NameSpacing] 
    38  3. Type Directed Name Resolution (TDNR): like FDR, but without the name-spacing part; see [http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution Type Directed Name Resolution]. 
     38 1. '''[wiki:Records/OverloadedRecordFields Simple Overloaded Record Fields] (SORF)'''.  Pure (Plan B). 
     39 2. '''[wiki:Records/NameSpacing Frege-derived Records] (FDR)'''.  Uses (Plan A) + (Plan B). 
     40 3. '''[http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution Type Directed Name Resolution] (TDNR)'''.  Pure (Plan B), but without abstraction. 
    3941 3. '''Are there any other approaches?''' 
    4042