Next Functional Programming in Perl 27

Syntactic Difficulties

        -- Hardly anyone wants to write this:
        eval (Div n d) = 
          (eval n) >>= \nv -> (eval d) >>= \dv -> 
            if dv == 0 then raise "Ouch" else return nv / dv
        -- Instead:
        eval (Div n d) = 
          do nv <- eval n; dv <- eval d; 
          if dv == 0 then raise "Ouch" else return nv / dv

Next Copyright 2005 M. J. Dominus