| 
  | 
Nicolas Alvarez wrote:
> I understand the C++ one and the Haskell one looks like line noise.
Uh-huh, and let me guess: You already know how to read and write C++ 
fluently, but you know nothing about Haskell yet? :-P
Seriously, I am constantly baffled by statements like this. The code I 
posted contains one line which is a little cryptic (the really long one 
where I dump the stack to stdout with 1 line of code). Other than that, 
it's all really quite straightfoward.
Or are you seriously telling me that the meaning of
     if (cmd == "^") break;
     if (cmd == "+") {Add(stack); continue;}
     if (cmd == "-") {Sub(stack); continue;}
     stack.push_back(1);
is somehow clearer than
   case cmd of
     "^" -> return ()
     "+" -> binary (+) stack
     "-" -> binary (-) stack
     _   -> main_loop (1:stack)
?
To me, all that tricky slight of hand with "break" and "continue" seems 
far less clear then just directly saying exactly what you want to 
happen, as the Haskell version does.
I really can't figure out what everybody finds so confusing about 
Haskell. Is it just that it uses different syntax to other "common" 
programming languages? (E.g., no curly braces, no function call 
brackets.) Or is it something deeper?
-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
 Post a reply to this message 
 | 
  |