From 123f880c86a6bf5025845a5a7fb413d534badf7f Mon Sep 17 00:00:00 2001 From: Chun Li Date: Wed, 27 May 2026 21:23:44 -0700 Subject: [PATCH] Added #dcp 567 - implementing cons/car/cdr. --- problems/cons_car_cdr.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 problems/cons_car_cdr.py diff --git a/problems/cons_car_cdr.py b/problems/cons_car_cdr.py new file mode 100644 index 0000000..9ff2fef --- /dev/null +++ b/problems/cons_car_cdr.py @@ -0,0 +1,31 @@ +""" +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!")