<div dir="ltr"><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">I would appreciate some advice about the best way to manipulate data structures in Haskell.</font></font></font><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif"><br>

</font></font></font></div><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">Let&#39;s assume I have what in an OO language would be a class with a number of instance variables.  When I want to change one of the values of one of those instance variables in Haskell I must rebuild the entire structure.  Even worse, if one of those instance variables is a reference to another data structure, then when I change that referenced data structure, I am forced to rebuild my top level variable.  For example.</font></font></font></div>

<div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">data Struct1  =  Struct1  {var1  :: Struct11, var2 :: Struct1, ... }</font></font></font></div>

<div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">data Struct11 = Struct11 {var11 :: ... }  </font></font></font><span class="Apple-style-span" style="font-family: &#39;trebuchet ms&#39;, sans-serif; color: rgb(0, 51, 51); "> </span></div>

<div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">Let&#39;s assume I have x :: Struct1 and that I change the value of var11 . var1 $ x.  Doesn&#39;t that require that I rebuild x?</font></font></font></div>

<div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">Is there a better way?</font></font></font></div>

<div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><font color="#003333"><font size="2"><font face="trebuchet ms,sans-serif">Thanks.</font></font></font></div>

<div><div dir="ltr"><font><font face="&#39;trebuchet ms&#39;, sans-serif"><i><font color="#003333"><br>-- Russ</font></i></font></font></div><br>
</div></div>