Common Lisp apropos和文档

Cod*_*lus 2 sbcl common-lisp read-eval-print-loop

我知道Common Lisp REPL提供的强大功能.我特意使用SBCL实现.但是,我不确定我的REPL设置是否正确,并且想知道如何从REPL中获得更多功能.

例如,我想找到计算机2 ^ 3 = 8的幂函数.这被称为pow或power许多其他语言.所以我做了:

CL-USER> (apropos 'pow)
    POW                                                                                                                                                                          
    POWER                                                                                                                                                                        
    :OP-POWER-EXT (bound)                                                                                                                                                        
    :POWERPC (bound)                                                                                                                                                             
    SB-IMPL::*INTEGER-READER-BASE-POWER* (bound)                                                                                                                                 
    SB-IMPL::*POWER-CACHE* (bound)                                                                                                                                               
    SB-IMPL::+POWER-CACHE-INTEGER-LENGTH-LIMIT+ (bound)                                                                                                                          
    SB-IMPL::COMPUTE-POWERS                                                                                                                                                      
    SB-IMPL::POWER                                                                                                                                                               
    SB-IMPL::POWERS-FOR-BASE (fbound)                                                                                                                                            
    SB-INT:POWER-OF-TWO-CEILING (fbound)                                                                                                                                         
    SB-KERNEL:%POW (fbound)                                                                                                                                                      
    SB-KERNEL::POWER                                                                                                                                                             
    SB-KERNEL:SCRUB-POWER-CACHE (fbound)                                                                                                                                         
    ; No value
Run Code Online (Sandbox Code Playgroud)

我如何查看任何这些功能的文档?在查看文档之前,我是否必须"导入"这些"库"?通常我发现文档丢失了,因为REPL将返回nil.文档在哪里?比如我做了:

CL-USER> (documentation 'power 'function)
Run Code Online (Sandbox Code Playgroud)

它刚刚返回,NIL但正如你从上面给出的列表中看到的那样apropos,power存在!

总结:

  1. 我如何找到函数,数据类型,变量等的文档...(还有哪些查找文档?)?
  2. 是SB-IMPL和SB-KERNEL已导入的库?

感谢您的帮助!

sds*_*sds 5

找到有关lisp对象的更多信息的标准方法是describe.

例如,

* (describe 'expt)

COMMON-LISP:EXPT
  [symbol]

EXPT names a compiled function:
  Lambda-list: (BASE POWER)
  Declared type: (FUNCTION (NUMBER NUMBER) (VALUES NUMBER &OPTIONAL))
  Derived type: (FUNCTION (T T) (VALUES T &OPTIONAL))
  Documentation:
    Return BASE raised to the POWER.
  Known attributes: foldable, flushable, unsafely-flushable, movable, recursive, explicit-check
  Source file: SYS:SRC;CODE;IRRAT.LISP
Run Code Online (Sandbox Code Playgroud)

要回答你的第二个问题:import操纵包(命名空间),同时load并require从磁盘加载库.我建议您阅读手册并提出更具体的问题.