9. Constructs a pair

This is your coding interview problem for today.

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.

This is a really cool example of using [closures](https://en.wikipedia.org/wiki/Closure_(computer_programming)) to store data.

def car(pair):
  return pair(lambda: a, b: a)

def cdr(pair):
  return pair(lambda: a, b: b)

Last updated

Was this helpful?