Синтаксис LISP и лямбда-нотация могут использовать простой пример - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть задание, где мы учим 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"
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...