[Haskell-cafe] Is there any way to parametrize a value update using record syntax?
Alexey Khudyakov
alexey.skladnoy at gmail.com
Tue Sep 6 23:13:49 CEST 2011
On 07.09.2011 00:56, Brandon Allbery wrote:
> 2011/9/6 Poprádi Árpád <popradi_arpad at freemail.hu
> <mailto:popradi_arpad at freemail.hu>>
>
> updateData1 :: X -> MonadicEnv()
> updateData1 d = do; env <- get; put env {data1 = d}
>
>
> > updateData1 d = modify (\r -> r {data1 = d})
>
> But there is, sadly, no eta-reduced version of record update to make the
> "\r -> r ..." boilerplate go away; recognition of the syntax requires an
> expression before the braces. (Consider the ambiguity of the
> eta-reduced expression "modify {data1 = d}".) Also, and much more
> annoyingly, "data1" must be constant.
>
In principle ambiguity could be resolved with a slash:
modyfy \{data = d}
But that's from land of hypothetical language extension and dog headed
people.
More information about the Haskell-Cafe
mailing list