
14 Mar
2010
14 Mar
'10
1:54 p.m.
Hi. I have definitions like data MyData = MyData { a :: A, b :: B, c :: C, d :: D, ... z :: Z } makeMyData :: A -> B -> MyData makeMyData a' b' = MyData { a = a', b = b', c = default_c, ... z = default_z } The goal is to use it like myData1 = set_x x' . set_m m' . set_c c' $ makeMyData my_a my_b myData2 = set_z z' . $ makeMyData my_a my_b But. Writing set_* functions is a problem - MyData is loong and things like set_d :: D -> MyData -> MyData set_d val struct = struct{d=val} will form that boilerplate. Is there any _right_ way of doing it? myData3 = (makeMyData my_a my_b) {x=x', z=z'} approach is not working.. -- Thanks, Sergey