If I call &quot;main&quot; in ghci, my program runs as it should, but if I try compiling it, and then running the result of that compilation, i.e.:<br><br>$ ghc -o animal_game game.hs<br>$ ./animal_game<br><br>unexpected things occur, particularly &quot;getChar&quot; does not work correctly, and if I take a route that doesn&#39;t lead to getChar needing to be called, the program stops running at the end of 2nd run despite your response to the do-you-want-to-play-again-question.<br>
<br>$ ./animal_game<br>....<br>Do you want to play again? (y/n)<br>y<br>....<br>Do you want to play again? (y/n)<br>y<br>Thanks for playing!<br>$<br><br>The source code is here: <a href="http://rafb.net/p/7fYlEV72.html">http://rafb.net/p/7fYlEV72.html</a><br>
I don&#39;t know how long that will stay up there, so let me know if it&#39;s gone and I&#39;ll repaste or find a better alternative.<br><br>What would also be nice is any comments on the actual code; as a begginner, it&#39;s nice to get some feedback, and I might as well also ask the following question. Originally I wanted to the types to be as such:<br>
<br>data Animal = Animal String<br>data Question a b = Question String a b -- where a is a Question or an Animal, as is b<br><br>The problem is I wanted methods that had types that&nbsp;were able to&nbsp;accept an&nbsp;argument&nbsp;of type Animal or Question, and for it to act appropriately on that type, I tried adding them to common type classes (a new one I created called &#39;Askable&#39; which contained a  method &#39;ask&#39;), but I ran into a whole bunch of problems. Is&nbsp;there any easy way to&nbsp;do&nbsp;it? <br>