<div dir="ltr">Hello,<div><br></div><div>I am new to Haskell and trying to learn it with <a href="http://learnyouahaskell.com">learnyouahaskell.com</a> and Pluralsight Haskell course. </div><div><br></div><div>And i have a very noob question.</div><div><br></div><div>I understand that <b>if .. else</b> is just a syntactic sugar over <b>case. </b>But what about guards then ?</div><div><br></div><div>Are guards also <b>case </b>in different syntax ? Or vice versa ? Like with an example.</div><div><br></div><div><br></div><div><div>anyEven nums</div><div>    | (length (removeOdd nums)) > 0 = True</div><div>    | otherwise                     = False</div><div><br></div><div><br></div><div>anyEven' nums = case (removeOdd nums) of</div><div>    []        -> False</div><div>    (x:xs)  -> True</div></div><div><br></div><div>I can do the same thing with both of them. </div><div><br></div><div>As i understand the only different thing is, with <b>case </b>i can manipulate the parameter (like here in the example i used removeOdd) and can use the manipulated parameter to decide what to do after that. </div><div>So i will not need to use removeOdd function inside the case. ( maybe i will need to use in every guard definition if i choose to use guards )</div><div><br></div><div>Is this it? </div><div><br></div><div>Is this the only difference between them ?</div><div><br></div><div>And if it is, why haskell needed do implement both of them. Can't we use function like removeOdd before using it on case or guard functions ?</div><div><br></div><div><br></div><div>Thanks, and sorry if my english is bad.</div><div><br></div><div>Semih Masat</div></div>