documentation - ¿Cómo ver las cadenas de documentación y otra información de símbolos en Common Lisp REPL?
repl ruby (2)
Soy completamente nuevo en CL, y me gustaría aprender a leer cadenas de documentación y obtener otra información de ayuda del REPL. ¿Algo como help(symbol)
en Python, o symbol?
en iPython, o :t
y :i
en Haskell''s GHCi.
Entonces, dado un nombre de símbolo, me gustaría poder saber:
- a qué tipo de valor está vinculado, si lo hay (una función, una variable, ninguna en absoluto)
- Si es una función o una macro, ¿cuáles son sus argumentos posicionales?
- si tiene una cadena de documentación, muéstrala
- de qué paquete o archivo proviene o cuándo se definió
Encontré que hay (documentation ''_symbol_ ''_type_)
, pero no es exactamente lo que necesito. Necesito saber el tipo de valor al que está vinculado el símbolo ( ''function
, ''variable
, ''compiler-macro
, etc.) antes de poder usar la documentation
. Luego devuelve solo la cadena de documentación, puede que falte o no sea suficiente para usar el símbolo.
Por ejemplo, en Lisp, la ayuda para mapcar
no es muy útil (REPL de CLisp):
> (documentation ''mapcar ''function)
NIL
Me gustaría poder ver algo como esto en su lugar:
>>> 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).
Como se mencionó, Common Lisp tiene funciones estándar: DESCRIBE , INSPECT y DOCUMENTATION . Las IDE típicas de Lisp también tienen estas teclas y menús.
Para la funcionalidad estándar de Common Lisp, la mayoría de los IDE se vinculan directamente a la documentación de Common Lisp HyperSpec con una pulsación de tecla.
La mayoría de los IDE también tienen pulsaciones de teclas para mostrar el arglista y la documentación. También existe la funcionalidad ''arglista en el espacio''.
Ejemplos específicos de LispWorks: información de la lista de argumentos de LispWorks y menú de expresiones de LispWorks
Puedo recomendar leer el manual de IDE para Slime , LispWorks Editor , ELegro CL''s ELI o cualquier IDE que esté utilizando.
Con respecto a su pregunta acerca de cómo obtener el tipo de símbolo: no existe tal cosa. O, más precisamente, los símbolos no son solo nombres de otros objetos, sino objetos del tipo SYMBOL . Cada símbolo puede tener tanto un valor variable como un valor de función. Para verificar si tiene un valor variable, use BOUNDP , y para verificar un valor de función FBOUNDP .