[Haskell-cafe] updating multiple fields of a record with lenses

Dan Burton danburton.email at gmail.com
Mon Nov 4 23:04:15 UTC 2013


There's not really a "smarter" way to do it, but there is a "prettier" way:

foo
  & a .~ "String"
  & b .~ [1,2,3]
  & c .~ 'c'
  & d .~ 4


-- Dan Burton


On Mon, Nov 4, 2013 at 2:51 PM, felipe zapata <tifonzafel at gmail.com> wrote:

>  Dear Haskellers,
>
>  let's  suppose I have the following lenses
>
>  data Foo = Foo { _a :: String
>                   _b :: [Double]
>                   _c :: Vector Double
>                   _d :: Int
>                   .............. (more fields)
>                   _z :: Double
>                 }
>
> Now, I want to update fields a,b,c and d without changing the rest.
> What is the functional way of doing it ?
>
> Surely there a function smarter than
>
>  set a "String" . set b [1,2,3] . set c  <1,2,3> . set d 4 $ foo
>
>  can some please help me with it?
>
>  Thanks in advance,
>
>    Felipe Z.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131104/d64fdeb3/attachment.html>


More information about the Haskell-Cafe mailing list