Как написать функцию в Лиспе.Скомпилируйте этот файл Lisp.а затем запустить эту программу на Лиспе - PullRequest
0 голосов
/ 19 апреля 2019

Напишите, скомпилируйте и протестируйте функцию в Common Lisp, которая берет список и подсчитывает общее количество положительных целых чисел в списке.Необходимо скомпилировать, а затем выполнить файл .lisp, содержащий функцию.после компиляции этого файла начните передавать его список, в котором после результатов для результата, поэтому проверка правильности функции.

У меня есть функция.Я могу запустить его, поместив if непосредственно в командную строку Lisp.Проще говоря, мне просто нужно выяснить, как скомпилировать файл, а затем передать его список на терминале, чтобы проверить его.

(count-if # '(lamda (x) (> x 0))

мне нужно скомпилировать, чтобы, например, передать это это ex :: (1 2 3 4 5) и результат должен быть :: 5, потому что их 5 значений, которые равны более 0

1 Ответ

1 голос
/ 19 апреля 2019

Написать файл:

$ echo "(defun test () (print :test))" > test.lisp

В том же каталоге запустите среду Common Lisp (например, с CCL), у вас есть REPL; скомпилируйте файл:

? (compile-file "test.lisp")
#P"/tmp/test.lx64fsl"
NIL
NIL

Обратите внимание, что если вы попытаетесь запустить функцию test, возникнет ошибка, поскольку она не определена в вашей среде.

Загрузить полученный объектный файл; если вы загружаете "test", файл объекта используется, если он доступен; вы могли бы вызвать load непосредственно для файла ".lisp", но тогда нет никаких гарантий, что файл скомпилирован или интерпретирован. Это небольшая деталь, вам, вероятно, не нужно заботиться о компиляции или нет.

? (load "test")

Теперь test доступен в вашей среде, вы можете назвать его:

? (test)

:TEST ;; what the function printed
:TEST ;; the returned value, automatically printed by the REPL

Не перезапуская среду Lisp, вы можете отредактировать файл и перезагрузить его. Это минималистичная установка, но этого должно быть достаточно для запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...