I have implemented a scene graph in Haskell and I have a problem. I walk down the scenegraph and at each node I recalculate translation matrix and pass it to each child. Well it seems to be causing a stack overflow and I am lost as to how to resolve the issue without issue a state variable of some kind to hold a &quot;matrix stack&quot; as is common in imperative implementations of scene graphs. When I run the program fromghci I get <br>
<div>&quot;drawingcamera&quot;</div><div>&quot;drawingground&quot;</div><div>&quot;drawinggroundModel&quot;</div><div>Matrix4x4 {i1j1 = -4.371139e-8, i1j2 = 0.0, i1j3 = 1.0, i1j4 = -3.9999998, i2j1</div><div>= 0.0, i2j2 = 1.0, i2j3 = 0.0, i2j4 = -1.5, i3j1 = -1.0, i3j2 = 0.0, i3j3 = -4.3</div>
<div>71139e-8, i3j4 = 3.0, i4j1 = 0.0, i4j2 = 0.0, i4j3 = 0.0, i4j4 = 1.0}</div><div>&quot;a model&quot;</div><div>&quot;classic matrix operation&quot;</div><div>&quot;drawingcarousel&quot;</div><div>&quot;drawingcarouselbase&quot;</div>
<div>&quot;drawingcarouselbaseModel&quot;</div><div>Matrix4x4 {i1j1 = -4.371139e-8, i1j2 = 1.0, i1j3 = -4.371139e-8, i1j4 = 0.0, i2j</div><div>1 = 0.0, i2j2 = -4.371139e-8, i2j3 = -1.0, i2j4 = 0.0, i3j1 = -1.0, i3j2 = -4.37</div>
<div>1139e-8, i3j3 = 1.9106855e-15, i3j4 = -1.0, i4j1 = 0.0, i4j2 = 0.0, i4j3 = 0.0,</div><div>i4j4 = 1.0}</div><div>&quot;classic matrix operation&quot;</div><div>&quot;drawingcarouselRoof&quot;</div><div>&quot;drawingcarouselRoofModel&quot;</div>
<div>Matrix4x4 {i1j1 = -4.371139e-8, i1j2 = 1.0, i1j3 = -4.371139e-8, i1j4 = 0.0, i2j</div><div>1 = 0.0, i2j2 = -4.371139e-8, i2j3 = -1.0, i2j4 = 0.3, i3j1 = -1.0, i3j2 = -4.37</div><div>1139e-8, i3j3 = 1.9106855e-15, i3j4 = -1.0, i4j1 = 0.0, i4j2 = 0.0, i4j3 = 0.0,</div>
<div>i4j4 = 1.0}</div><div>&quot;classic matrix operation&quot;</div><div>&quot;drawingcarouselFloor&quot;</div><div>&quot;drawingcarouselFloorModel&quot;</div><div>Matrix4x4 {i1j1 = -4.371139e-8, i1j2 = 1.0, i1j3 = -4.371139e-8, i1j4 = 0.0, i2j</div>
<div>1 = 0.0, i2j2 = -4.371139e-8, i2j3 = -1.0, i2j4 = 0.0, i3j1 = -1.0, i3j2 = -4.37</div><div>1139e-8, i3j3 = 1.9106855e-15, i3j4 = -1.0, i4j1 = 0.0, i4j2 = 0.0, i4j3 = 0.0,</div><div>i4j4 = 1.0}</div><div>&quot;classic matrix operation&quot;</div>
<div>&quot;drawingpolls&quot;</div><div>&quot;drawingpoll1&quot;</div><div>&quot;drawingpoll1Model&quot;</div><div>Matrix4x4 {i1j1 = &lt;interactive&gt;: &lt;&lt;loop&gt;&gt;</div><div>&lt;interactive&gt;: interrupted</div>
<div><br></div><div>As you can see there are only a handful of nodes at this point so I am confused as to why it is happening here, any thoughts?</div>