Records in Haskell

Wolfgang Jeltsch g9ks157k at acme.softbase.org
Tue Nov 8 15:58:19 CET 2011


Am Montag, den 07.11.2011, 21:41 +0000 schrieb Barney Hilken:
> > The problem with this approach is that different labels do not have
> > different representations at the value level. 
> 
> I think this is an advantage, because it means you don't have to carry
> this stuff about at runtime.
> 
> > This allows me to pattern match records, since I can construct record
> > patterns that contain fixed labels:
> > 
> >    X :& MyName1 := myValue1 :& MyName2 := myValue2
> > 
> > I cannot see how this could be done using kind String. Do you see a
> > solution for this?
> > 
> > A similar problem arises when you want to define a selector function.
> > You could implement a function get that receives a record and a label as
> > arguments. However, you could not say something like the following then:
> > 
> >    get myRecord MyName1
> > 
> > Instead, you would have to write something like this:
> > 
> >    get myRecord (Label :: MyName1)
> 
> Just define a constant
> 
> 	myName1 = Label :: MyName1
> 
> for each label you actually use, and you can use it in both get and
> pattern matching

You cannot use such a constant in a pattern. You need a data constructor
if you want to use pattern matching.

Best wishes,
Wolfgang




More information about the Glasgow-haskell-users mailing list