Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Tales from writing a RPN evaluator in Perl 5, Perl 6 and Haskell

by Anonymous Monk
on Jan 04, 2006 at 19:14 UTC ( #520986=note: print w/ replies, xml ) Need Help??


in reply to Tales from writing a RPN evaluator in Perl 5, Perl 6 and Haskell

Just thought I'd try my hand at creating the drop dead most simple examples I could. Doesn't handle errors as nicely.

#Perl5 $rpn = "3 10 * 20 5 / +"; $dig = qr/-?\d+\s+/; $op = qr/[+\-*\/]/; %f = ("+" => sub{$_[0] + $_[1]}, "-" => sub{$_[0] - $_[1]}, "*" => sub{$_[0] * $_[1]}, "/" => sub{$_[0] / $_[1]}); 1 while($rpn =~ s/^(.*?)($dig)($dig)($op)/$1.($f{$4}->($2,$3))/e); print "$rpn\n";
...and...
//Haskell main = print $ foldl eval [] $ words "3 10 * 20 5 / +" -- 34 eval (x:y:xs) "+" = y+x : xs eval (x:y:xs) "-" = y-x : xs eval (x:y:xs) "*" = y*x : xs eval (x:y:xs) "/" = y`div`x : xs eval xs dig = (read dig):xs


Comment on Re: Tales from writing a RPN evaluator in Perl 5, Perl 6 and Haskell
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://520986]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (9)
As of 2014-08-28 05:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (257 votes), past polls