2015-10-15 3 views
0

В C, если я хочу увидеть функцию, которая работает, я открываю библиотеку, которая предоставляет функцию и анализирует код. Как можно реализовать реализации функций lisp? Например, функция пересеченияреализация функций lisp

+3

В C вы можете сделать это только в том случае, если библиотека является свободным программным обеспечением. Для проприетарной библиотеки вы застряли ... И в Linux, для системных вызовов, большая часть работы выполняется внутри ядра, так что это намного сложнее, чем вы думаете –

+0

wow я этого не знал. спасибо @BasileStarynkevitch – snr

+2

Это вопрос очень низкого качества. Вопрос неудобен для Stackoverflow (речь идет не о реальной проблеме программирования), и автор не приложил никаких усилий. –

ответ

2

Вы также можете посмотреть исходный код функций lisp.

Например, исходные файлы для CLISP, одна реализация Common Lisp, доступны здесь: http://www.clisp.org/impnotes/src-files.html

Если вы хотите, чтобы рассмотреть вопрос об осуществлении функций, связанных со списками, вы можете посмотреть на файл: http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/src/list.d

1

обычный ответ «M-.»

Предполагая, что вы правильно сконфигурированный IDE, а исходный код функции, нажав на его название и нажав M-. (это Meta или Alt или Option или бежать, и точка/период, или w какой бы ключ ни использовал ваш IDE) должен показать свое определение (или, для общей функции, определения, множественное число; включая любые макросы компилятора, которые могут оптимизировать некоторые случаи). Иногда это происходит при щелчке правой кнопкой мыши или другом меню мыши или панели инструментов.

Если источник не доступен, вы часто можете увидеть фактическую скомпилированную форму путем оценки (disassemble 'function)

Большинства IDE, в том числе многолетних любимого Emacs + Слизи, другие операции инспекции в меню, а также.

В среде, отличной от IDE, большинство компиляторов имеют собственные инструменты отражения (зависящие от компилятора), которые обычно также отображаются в библиотеке Swank, используемой Slime; можно найти полезную функцию в этом пакете.

И это действительно должно быть задокументировано в руководстве вашей IDE.


я POSTSCRIPT это что:

Вы действительно не должны заботиться о выполнении ключевых функций библиотеки; их контрактное поведение очень хорошо документировано в стандарте CLHS, доступном в Интернете, и, например, Quicklisp имеет утилиту для связывания его с Slime (C-c C-d h на символ в пакете COMMON-LISP); для всех хорошо написанных библиотек Lisp должна быть документация, прикрепленная к функциям, переменным, классам и т. д., доступная через функцию documentation в меню REPL или меню IDE и окна инспекции.

Основные функции библиотеки часто высоко оптимизированы и намного сложнее, чем большинство кодеков пользовательского уровня, и они часто обращаются к компиляционным «кишкам», которых следует избегать в коде приложения.

Смежные вопросы