rauhryan
10/24/2011 - 4:15 PM

a_plus_abs_b.hs

(define (a-plus-abs-b a b)
      ((if (> b 0) + -) a b))

(a-plus-abs-b 4 -5) ; returns 9

(+ 4 -5) ; returns -1
(- 4 -5) ; returns 9

(= 
   (a-plus-abs-b 4 -5)
   (+ 4 -5)) ; False

(= 
   (a-plus-abs-b 4 -5)
   (- 4 -5)) ; True
(define (a-plus-abs-b a b)
      ((if (> b 0) + -) a b))
function a_plus_abs_b(a, b) {

    return (b > 0 ? plus : subtract)(a, b);

    // can't return +; #sadpanda
    function plus(a, b) { return a + b; };
    // can't return -; #sadpanda
    function subtract(a, b) { return a - b; }; 
}
add :: Integer -> Integer -> Integer
add (a, b) = a + b;

-- Haskell allows me to call the function two ways

-- prefix notation
add (1,2) -- 3

-- infix notation
1 `add` 2 -- 3