<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">The two myAction functions below seem to be equivalent and, for this small case, show an interesting economy of code, but being far from a Haskell expert, I have to ask, is the first function as small (code wise) as it could be?<br><br>Michael<br><br><br>import Control.Applicative<br><br>data Color<br>&nbsp;&nbsp;&nbsp; = Red<br>&nbsp;&nbsp;&nbsp; | Blue<br>&nbsp;&nbsp;&nbsp; | Green<br>&nbsp;&nbsp;&nbsp; | Yellow<br>&nbsp;&nbsp;&nbsp; | Orange<br>&nbsp;&nbsp;&nbsp; | Brown<br>&nbsp;&nbsp;&nbsp; | Black<br>&nbsp;&nbsp;&nbsp; | White<br>&nbsp;&nbsp;&nbsp; deriving (Show, Read, Eq, Enum, Ord, Bounded)<br><br>-- myAction :: IO Color<br>-- myAction = getLine<br>--&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;= \str -&gt; return (read str :: Color)<br><br>myAction :: IO Color<br>myAction = read &lt;$&gt; getLine<br><br></td></tr></table><br>