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存在!
总结:
SB-IMPL和SB-KERNEL已导入的库?感谢您的帮助!
找到有关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从磁盘加载库.我建议您阅读手册并提出更具体的问题.