<div dir="ltr"><div>Hi Adam,</div><div> </div><div>thanks for your answer, I will re-check HList with Labelable labels. With regards to your question "named labels": good point, all records indeed have "named labels" so what was my statement? I actually thought that Vinyl does keep run-time information of the labels from a Blog about vinyl-gl, but actually I'm not so sure about it anymore, so it is more a question: do those alternatives of extensible records differentiate by the way they keep runtime information of labels?</div>
<div> </div><div>regards</div><div>Peter</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-03 18:54 GMT+02:00 adam vogt <span dir="ltr"><<a href="mailto:vogt.adam@gmail.com" target="_blank">vogt.adam@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Peter,<br>
<br>
Could you show what you mean by "named labels"?<br>
<br>
Vinyl is a fine choice, but have you looked at HList >= 0.3? The<br>
lenses/labels done with Data.HList.Labelable are prettier than the<br>
vinyl alternative in my biased opinion. Furthermore, they support<br>
changing types in the  record unlike vinyl (ie. they provide a Lens<br>
not Lens').<br>
<br>
HList is a bit slow at compile time<br>
<<a href="http://code.haskell.org/~aavogt/HList-benchmark/a.html" target="_blank">http://code.haskell.org/~aavogt/HList-benchmark/a.html</a>> if you make<br>
records with many fields. That situation may improve soon if we take<br>
advantage of the ordering on Symbol that ghc-7.8 introduced. In other<br>
words, we will probably follow the lead of<br>
<<a href="http://www.haskell.org/haskellwiki/CTRex" target="_blank">http://www.haskell.org/haskellwiki/CTRex</a>> and make Records sorted by<br>
their labels.<br>
<br>
There are quite a few other libraries<br>
<<a href="http://www.haskell.org/haskellwiki/Extensible_record#Libraries_on_hackage" target="_blank">http://www.haskell.org/haskellwiki/Extensible_record#Libraries_on_hackage</a>>.<br>
Also consider lens' makeClassy as another solution to the records<br>
problem.<br>
<br>
Regards,<br>
Adam<br>
<br>
On Sat, May 3, 2014 at 6:16 AM, Peter Althainz <<a href="mailto:althainz@gmail.com">althainz@gmail.com</a>> wrote:<br>
> Dear All,<br>
><br>
> I'm searching a handsome library for handling large amounts of configuration<br>
> data in a flexible manner. So to speak I want to use some kind of<br>
> inheritance of data fields. I think this is where the extensible records<br>
> discussion is a proper description of my use case.<br>
><br>
> I've found 2 libraries making this work, so far:<br>
><br>
> HList<br>
> Vinyl<br>
><br>
> I currently prefer Vinyl due to the complex types in HList, lens<br>
> compatibiliy, named labels. (I love the HList and OOHaskel papers, but for<br>
> practical use, I currently prefer Vinyl).<br>
><br>
> What do you think, what is the best way nowadays to use extensible records?<br>
> Is Vinyl a good choice from your point of view?<br>
><br>
> regards<br>
> Peter<br>
><br>
> _______________________________________________<br>
> Haskell-Cafe mailing list<br>
> <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
> <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
><br>
</blockquote></div><br></div>