Hi there.<br><br>recently I was trying to represent complex data by defining several datatypes and nesting them, such as<br><br>data Foo = Foo { foo :: Bar }<br>
&nbsp;&nbsp;&nbsp; deriving (Eq,Show)<br>
data Bar = Bar { bar :: Int&nbsp;}<br>
&nbsp;&nbsp;&nbsp; deriving (Eq,Show)<br>
<br>To change only a part of the data, syntactic sugar is quite convenient. But it seems to be quite painful with nested datatypes.<br><br>b = Bar 10<br>f = Foo b<br><br>foobar :: Int -&gt; Foo -&gt; Foo<br>foobar i f =<br>
&nbsp;&nbsp;&nbsp; let nb = (foo f){bar = i}<br>&nbsp;&nbsp;&nbsp; in f{foo = nb}<br><br>So, my question is : is there a nifty way to modify data within a nested datatype, similar to the f{foo = bar} style ? If not, anyone is using some kind of workaround for this ?
<br>