Интерфейс в Лиспе - PullRequest
       4

Интерфейс в Лиспе

2 голосов
/ 16 марта 2012

В C мы разделяем код на две сущности: интерфейс для клиента и реализация для выполнения работы, требуемой интерфейсом.Интерфейс указывается в .h, а реализация - в .c.Это удобно, если мы хотим предоставить только интерфейс, а не исходный код, и нам не нужно полагаться на документацию для поиска интерфейса, который может быть выполнен интерфейсом.

Как я могудобиться того же с Lisp?

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

Заголовочные файлы, как правило, не являются особенностью Lisps.Ближайший аналог, который вы найдете - это package.lisp в библиотеках, который включает форму DEFPACKAGE, в которой перечислены символы, экспортированные из пространства имен.Это, однако, соглашение, а не требование.

3 голосов
/ 16 марта 2012

Хороший способ понять Lisp с точки зрения хакера C состоит в том, что загрузка Lisp-файлов для создания программы аналогична не столько компиляции C, сколько связыванию.

В инструментальной цепочке на основе языка C компоновщик переносит объектные файлы в память, разрешает символы и создает исполняемый образ.

В Лиспе система Лисп загружает файлы и создает изображение (в памяти). Обычно существует какой-то механизм для сохранения всего, чтобы создать исполняемый файл.

Динамическая загрузка еще больше похожа на Lisp: способ загрузки модулей Firefox или способ загрузки модулей ядром Linux или веб-сервером Apache.

ALI Все эти технологии, основанные на обеспечении безопасности и управления версиями при динамической загрузке, будь то COM от Microsoft и его IUnknown и QueryInterface, или управление версиями символов в ядре Linux, или механизм совместно используемых библиотек ELF, по сути, являются "Greenspunning" функции компиляции и загрузки Lisp и привязка символов Lisp к сущностям, таким как классы, функции и переменные.

Ссылки:

Оценка и компиляция

http://www.lispworks.com/documentation/lw60/CLHS/Body/03_.htm

Конструкция системы:

http://www.lispworks.com/documentation/lw60/CLHS/Body/24_.htm

1 голос
/ 16 марта 2012

Почему расчет лучше, чем интрига .Такие языки, как ocaml, дают ml и mli для той же цели, плюс вы получаете безопасность типов.

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