-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproblem5.py
More file actions
37 lines (29 loc) · 720 Bytes
/
Copy pathproblem5.py
File metadata and controls
37 lines (29 loc) · 720 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# This problem was asked by Jane Street.
# cons(a, b) constructs a pair,
# and car(pair) and cdr(pair) returns
# the first and last element of that pair.
# For example, car(cons(3, 4)) returns 3,
# and cdr(cons(3, 4)) returns 4.
# Given this implementation of cons:
# def cons(a, b):
# def pair(f):
# return f(a, b)
# return pair
# Implement car and cdr.
def cons(a, b):
def pair(f):
return f(a, b)
return pair
def car(pair):
def first(a,b):
return a
return pair(first)
def cdr(pair):
def second(a,b):
return b
return pair(second)
def main():
assert car(cons(3, 4)) == 3
assert cdr(cons(3, 4)) == 4
if __name__ == '__main__':
main()