Hello. I&#39;m implement data structures (a stack, here) to get familiar with<br>Haskell. It&#39;s not going very well. I have the following code...<br><br>    -- test.hs<br>    data Stack a = Top (Stack a) | Layers [a] deriving (Show)<br>
<br>    stack :: Stack a<br>    stack = Top (Layers [])<br><br>    push :: Stack a -&gt; a -&gt; Stack a<br>    push (Top (Layers ls)) value = Top (Layers (value:ls))<br>    <br>And I run the following in ghci...<br><br>    Prelude&gt; :l test<br>
    [1 of 1] Compiling Main             ( test.hs, interpreted )<br>    Ok, modules loaded: Main.<br>    *Main&gt; push stack 4<br>    Top (Layers [4])<br>    *Main&gt; let st = stack<br>    *Main&gt; push st 4<br>    ^CInterrupted.<br>
<br>The output of the last command never resolves. I have to kill it. Might<br>anyone have an idea why the push function is failing with st, but not<br>with stack?<br><br>I know there are other stack implementations that work, but I really<br>
want to know what&#39;s going on here.<br><br>Thanks<br>