История изменений
Исправление MOPKOBKA, (текущая версия) :
Так cons сами лишние при таком подходе, есть же замыкания, вот пример из Wikipedia, реализация cons через функции, на CL и других лиспах тоже можно повторить.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
(define (cdr z)
(z (lambda (p q) q)))
И даже в первом лиспе уже были массивы! Потому что нельзя терпеть cons даже в языке-эксперименте, а могли бы вообще от них избавиться.
Исправление MOPKOBKA, :
Так cons сами лишние при таком подходе, есть же замыкания, вот пример из Wikipedia, реализация cons через функции, на CL и других лиспах тоже можно повторить.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
(define (cdr z)
(z (lambda (p q) q)))
Исходная версия MOPKOBKA, :
Так cons сами лишние при таком подходе, есть же замыкания, вот пример из Wikipedia:
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
(define (cdr z)
(z (lambda (p q) q)))