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@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@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe