[Haskell-cafe] template haskell library for OO-like selector syntax?

Vanessa McHale vanessa.mchale at iohk.io
Tue May 15 14:01:59 UTC 2018


>In Haskell, if using immutable data, this would requiring doing a data
update on every level

I'm not sure what you mean but in either case it doesn't have to do with
immutability. Haskell is lazy, so your updates will only happen if the
field is later accessed. The other fields in the record will only be
updated if they A) change and B) are later accessed. If you just updated
one field of a record the other fields will still have pointers to the
old data.

Otherwise, I agree with Matt's answer. Lenses handle this problem nicely  :)

On 05/14/2018 07:41 PM, Dennis Raddle wrote:
> In my current application, I'm really missing the ability from OO to
> do things like
>
> someData.field1.field2 = "foo"
>
> What's do I mean?
>
> - field selectors are scoped so that names don't clash with each other
> or global names
>
> - this way of selecting data can be used both for reading it, and for
> updating specific fields of some data deep in a data hierarchy (In
> Haskell, if using immutable data, this would requiring doing a data
> update on every level). 
>
> Any attempt to do this in Haskell, for me anyway, results in an
> explosion of names and a lot of boilerplate code and a resulting heavy
> syntax.
>
> Is there a way of obtaining OO-like concise syntax, perhaps with
> Template Haskell?
>
> Dennis
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.

-- 



*Vanessa McHale*
Functional Compiler Engineer | Chicago, IL

Website: www.iohk.io <http://iohk.io>
Twitter: @vamchale
PGP Key ID: 4209B7B5

Input Output <http://iohk.io>

Twitter <https://twitter.com/InputOutputHK> Github
<https://github.com/input-output-hk> LinkedIn
<https://www.linkedin.com/company/input-output-global>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180515/2fc22f87/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180515/2fc22f87/attachment.sig>


More information about the Haskell-Cafe mailing list