[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