Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

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

by eyepopslikeamosquito (Chancellor)
on Jan 04, 2006 at 09:23 UTC ( #520826=perlmeditation: print w/replies, xml ) Need Help??

Help for this page

Select Code to Download

  1. or download this
    package Rpn;
  2. or download this
    use strict;
    use warnings;
        eval { Rpn::evaluate($t->[0]) };
        is($@, $t->[1]);
  3. or download this
    module Rpn-0.0.1-cpan:ASAVIGE;
        @stack.elems == 1 or die "Invalid stack:[@stack[]]\n";
        return @stack[0];
  4. or download this
        try { Rpn::evaluate($t[0]) };
        is($!, $t[1]);
  5. or download this
    {-# OPTIONS_GHC -fglasgow-exts -Wall #-}
      | otherwise       = error $ "Invalid stack:" ++ show el
      el = foldl evalStack [] $ words expr
  6. or download this
    {-# OPTIONS_GHC -fglasgow-exts -Wall #-}
    main :: IO Counts
    main = do runTestTT normalTests
              runTestTT exceptionTests
  7. or download this
    (Control.Exception.evaluate (Rpn.evaluate x))
  8. or download this
    f (x:y:zs) "+" = y+x:zs
  9. or download this
    import Debug.Trace
    -- ...
    f (x:y:zs) "+" = trace ("+" ++ show x ++ ":" ++ show y ++ ":" ++ show 
    +zs) (y+x:zs)
  10. or download this
    autrijus stares at type Eval x = forall r. ContT r (ReaderT x IO) (Rea
    +derT x IO x)
    and feels very lost
    <shapr> Didn't you write that code?
    <autrijus> yeah. and it works
    <autrijus> I just don't know what it means.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://520826]
Approved by Corion
Front-paged by Corion
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2017-11-24 01:11 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (343 votes). Check out past polls.