<div>Hi all,</div>
<div>        Will somebody please explain why this wont run, I sure the code is right?</div>
<div> </div>
<div>data Expression = Val Integer<br>                | Add Expression Expression<br>                | Subtract Expression Expression<br>                | Multiply Expression Expression<br>                | Divide Expression Expression<br>
         deriving Show<br>demo1 = (Add(Add(Add(Val 6)(Val 5))(Val 10))(Val 7))</div>
<div>evalStep :: Expression -&gt;  Expression<br>evalStep (Val x)=  (Val x) </div>
<div>evalStep (Add x y)<br>   = case x of<br>       (Val a) -&gt; case y of<br>                    (Val b) -&gt; Val (a+b)<br>                    left -&gt; Add x (evalStep y)<br>       right -&gt; Add y(evalStep x) <br>
 <br>evaluate :: Expression -&gt; Expression</div>
<div>-- Base case<br>evaluate (Val a) = Val a</div>
<div><br>-- Recursive case<br>evaluate e = do<br>             putStrLn &quot;Evaluating one more step&quot;</div>
<div>             e&#39; &lt;- return (evalStep e)<br>             putStrLn (&quot;Result is &quot;++(show e&#39;))<br>             putStrLn &quot;Do another step (y/n)? :&quot;<br>             c &lt;- getChar<br>             if (c==&#39;y&#39;) then<br>
                evaluate e&#39;<br>            else<br>               putStrLn &quot;OK, finished&quot;</div>
<div> </div>
<div>Its suppose to print out the first step then ask you if you want the next step all the way to the end</div>