У меня есть задание, где мы учим LISP. Проект, который мы используем, немного похож на этот: https://github.com/Kallekro/LISPinC.
Нам в основном дан переводчик, а оттуда нам даны некоторые функции списка:
(define car (lambda ((a . d)) a))
(define cdr (lambda ((a . d)) d))
(define caar (lambda (((aa . da) . d)) aa))
(define cadr (lambda ((a ad . dd)) ad))
(define cdar (lambda (((aa . da) . d)) da))
(define cddr (lambda ((a ad . dd)) dd))
(define list (lambda l l))
(define append (lambda (() bs) bs ((a . as) bs) (cons a (appendd as bs))))
Я пытался написать несколько простых функций LISP, просто чтобы попытаться освоить синтаксис и лямбда-нотацию, однако я терпел неудачу и поэтому хотел бы спросить, может ли показать кто-то более опытный, чем я Я приведу несколько примеров того, как я мог бы написать простую функцию, используя вышеуказанные функции. Мне нужно написать функцию, которая переворачивает список и сортирует его, просто не знаю, с чего начать.
Разрешенные ключевые слова:
const char keywords[KEYWORDS_C][MAX_SYMBOL_LENGTH] = {
"quote", "lambda", "define", "cons", "save", "load"
};