Instantly share code, notes, and snippets.

# kroger/ex1.5.py Last active Aug 29, 2015

What would you like to do?
 def p(): return p() def test(x, y): return 0 if x == 0 else y test(0, p())
 from operator import add, sub def a_plus_abs_b(a, b): return (add if b > 0 else sub)(a, b)
 (define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
 # applicative order normal order f(5) f(5) sum_of_squares(5+1, 5*2) sum_of_squares(5+1, 5*2) sum_of_squares(6, 10) square(5+1) + square(5*2) square(6) + square(10) ((5+1) * (5+1)) + ((5*2) * (5*2)) (6 * 6) + (10 * 10) (6 * 6) + (10 * 10) 36 + 100 36 + 100 136 136
 def average(x, y): return (x + y)/2
 def sqrt(x): def is_good_enough(guess, x): return abs(square(guess) - x) < 0.001 def improve(guess, x): return average(guess, x/guess) def sqrt_iter(guess, x): if is_good_enough(guess, x): return guess else: return sqrt_iter(improve(guess, x), x) return sqrt_iter(1.0, x)
 >>> import dis >>> dis.dis(square) 1 0 LOAD_FAST 0 (x) 3 LOAD_FAST 0 (x) 6 BINARY_MULTIPLY 7 RETURN_VALUE >>> dis.dis(square2) 1 0 LOAD_FAST 0 (x) 3 LOAD_FAST 0 (x) 6 BINARY_MULTIPLY 7 RETURN_VALUE
 def is_good_enough(guess, x): return abs(square(guess) - x) < 0.001
 def improve(guess, x): return average(guess, x/guess)
 square2 = lambda x: x * x
 lambda x: x * x
 def sqrt(x): def is_good_enough(guess): return abs(square(guess) - x) < 0.001 def improve(guess): return average(guess, x/guess) def sqrt_iter(guess): if is_good_enough(guess): return guess else: return sqrt_iter(improve(guess)) return sqrt_iter(1.0)
 def myabs(x): if x > 0: return x elif x == 0: return x elif x < 0: return x
 def myabs(x): if x < 0: return -x else: return x
 def myabs(x): return -x if x < 0 else x
 def sqrt(x): return sqrt_iter(1.0, x)
 def sqrt_iter(guess, x): if is_good_enough(guess, x): return guess else: return sqrt_iter(improve(guess, x), x)
 square(2 + 5) square(square(7 + square (3)))
 def square(x): return x * x
 def sum_of_squares(x, y): return square(x) + square(y) sum_of_squares(3, 4) def f(a): return sum_of_squares(a + 1, a * 2)
to join this conversation on GitHub. Already have an account? Sign in to comment