Ответы пользователя по тегу Lisp
  • Как упростить LISP?

    Yoschi
    @Yoschi
    (cons 1 2) => '(1 . 2)
    А список из двух элементов это (cons 1 (cons 2 nil))
    Так что, боюсь, без точечных пар вам не обойтись. Они имеют отношение не именно к "парам элементов", а к конструированию списковых ячейкеек. Попробуйте выполнить (cons 1 (cons 2 3)) и убедитесь.
    Кстати, упомянутый nil (ну и соответственно T) вам тоже понадобится.
    Обязательна возможность сравнения. Не исключаю, что вы её присовокупили к арифметическим функциям, но сравнение логических значений тоже дело совершенно необходимое.
    Ну и наконец необходима возможность отличать список от атома. Насколько помню, atomp либо consp обязательно включается в ядро лисп. Это вроде как не влияет на тьюринг-полноту, но реализовать это вне ядра, в виде функции с помощью примитивов не получится.
    Ответ написан
    2 комментария