""" cons(a, b) constructs a pair, and car(pair) and cdr(pair) return the first and last element of that pair. car(cons(3, 4)) == 3 cdr(cons(3, 4)) == 4 Given this implementation of cons, implement car and cdr. """ def cons(a, b): return lambda f: f(a, b) def car(pair): return pair(lambda a, b: a) def cdr(pair): return pair(lambda a, b: b) # --- tests --- assert car(cons(3, 4)) == 3 assert cdr(cons(3, 4)) == 4 assert car(cons("a", "b")) == "a" assert cdr(cons("a", "b")) == "b" print("All tests passed!")