Cons - это функция, которая принимает 2 аргумента и возвращает функцию, которая применяет функцию к паре, поэтому мы можем собрать car
и cdr
в одном и том же fasion:
def car(pair):
def unpack(a, b):
return a
return pair(unpack)
def cdr(pair):
def unpack(a, b):
return b
return pair(unpack)
Это пример / упражнение, которое приходит из функционального программирования, в котором все может быть абстрагировано от функций (просто говоря).
Он имеет реальное использование с языками, например Haskell
или Racket
. Но я не думаю, что это должен быть действительно готовый вариант для Python (IMO).
Как видите, в коде нет переменных, кроме самих аргументов:
>>> car(cons(1, 2))
1
>>> cdr(cons(1, 2))
2