CS 61A

Structure and Interpretation of Computer Programs, Spring 2015

Instructor: John DeNero




Question | Lambda Fillins

Fill in the blanks so that the doctests pass.

"""
>>> a()
2
>>> b(3)
1
>>> b(10)
1
>>> b(2)
1
>>> c(1)
1
>>> c(3)
3
>>> d(1, 3)
4
>>> d(2, 5)
7
>>> e(1, 3)
3
>>> e(2, 5)
5
>>> f(2, 5)
52
>>> f(3, 1)
13
>>> g(1)(2)
12
>>> g(2)(1)
21
>>> h()(2)
7
>>> h()(3)
8
>>> i(2, 5)(2)
4
>>> i(3, 5)(2)
5
>>> j(lambda x: 2)(1)
2
>>> j(lambda x: x + 1)(1)
2
>>> (lambda x: x(2))(k)
3
>>> (lambda x: lambda y: x(y()))(m)(n)
5
>>> o('cal')
cal
>>> p(lambda x: x + 2, lambda x: x + 3)(1)
6
>>> q('veggies')(lambda: 'eat')
eat veggies
>>> happy = r(30, lambda: new_year() // 1000)
>>> new_year = (lambda x: lambda: x)(2000)
>>> happy(new_year)
2015
>>> s(lambda x: x()('cal'))
cal
>>> t('ta')('n')
arctan
>>> u('sine')
arccosine
>>> v()
arccosecant
"""
a = _______
b = _______
c = _______
d = _______
e = _______
f = _______
g = _______
h = _______
i = _______
j = _______
k = _______
# There is no l
m = _______
n = _______
o = _______
p = _______
q = _______
r = _______
s = _______
def t(__):
    _________________
def u(__): # use t!
    _________________
def v():
    _________________
a = lambda: 2
b = lambda x: 1
c = lambda x: x
d = lambda x, y: x + y
e = lambda x, y: y
f = lambda x, y: y * 10 + x
g = lambda x: lambda y: 10 * x + y
h = lambda: lambda x: x + 5
i = lambda x, y: lambda z: x + z
j = lambda x: lambda y: x(y)
k = lambda x: x + 1
# There is no l
m = lambda x: x
n = lambda: 5
o = lambda x: print(x)
p = lambda x, y: lambda z: x(y(z))
q = lambda x: lambda y: print(y(), x)
r = lambda x, y: lambda z: z() + x // y()
s = lambda x: x(lambda: print)
def t(x):
    return lambda y: print('arc' + x + y)
def u(x): # use t!
    return t('co' + x)('')
def v():
    return u('secant')