Как просмотреть строки документации и другую символьную информацию в Common Lisp REPL?

Я совершенно новичок в CL, и я хотел бы научиться читать строки документации и получать другую справочную информацию из REPL. Что-то вроде help(symbol) в Python, или symbol? в iPython или :t а также :i в GHCi Хаскелла.

Итак, учитывая имя символа, я бы хотел знать:

  • с каким значением оно связано, если оно есть (функция, переменная, вообще ничего)
  • если это функция или макрос, то каковы его позиционные аргументы
  • если у него есть строка документации, покажите это
  • из какого пакета или файла он приходит или когда он был определен

Я нашел там (documentation '_symbol_ '_type_), но это не совсем то, что мне нужно. Мне нужно знать тип значения, с которым связан символ ('function, 'variable, 'compiler-macroи т. д.), прежде чем я могу использовать documentation, Затем он возвращает только строку документации, она может отсутствовать или недостаточно для использования символа.

Например, в Лиспе помощь для mapcar не очень полезен (REPL CLisp):

> (documentation 'mapcar 'function)
NIL

Я бы хотел увидеть что-то вроде этого:

>>> map?
Type:       builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:    <built-in function map>
Namespace:  Python builtin
Docstring:
    map(function, sequence[, sequence, ...]) -> list

    Return a list of the results of applying the function to the items of
    the argument sequence(s).  If more than one sequence is given, the
    function is called with an argument list consisting of the corresponding
    item of each sequence, substituting None for missing values when not all
    sequences have the same length.  If the function is None, return a list of
    the items of the sequence (or a list of tuples if more than one sequence).

2 ответа

Решение

Как уже упоминалось, Common Lisp имеет стандартные функции: DESCRIBE, INSPECT и DOCUMENTATION. Типичные Lisp IDE также связаны с ключами и меню.

Для стандартной функциональности Common Lisp большинство IDE напрямую связываются с документацией Common Lisp HyperSpec нажатием клавиши.

Большинство IDE также имеют нажатия клавиш для отображения arglist и документации. Существует также функция "arglist on space".

Примеры LispWorks: информация о списках аргументов LispWorks и меню выражений LispWorks

Я могу порекомендовать прочитать руководство по IDE для Slime, LispWorks Editor, ELI Allegro CL или любой другой IDE, которую вы используете.

Что касается вашего вопроса о получении типа символа: такого не существует. Или, точнее, символы - это не просто имена других объектов, но сами объекты типа SYMBOL. Каждый символ может иметь как значение переменной, так и значение функции. Чтобы проверить, имеет ли оно значение переменной, используйте BOUNDP, а для проверки значения функции FBOUNDP.

Другие вопросы по тегам