gpt4 book ai didi

common-lisp - 是否为标准Common Lisp函数定义别名?

转载 作者:行者123 更新时间:2023-12-04 16:34:17 24 4
gpt4 key购买 nike

据说Lisp可以重新定义其核心功能。
我想为函数cl:documentation函数定义一个别名,这样

(doc 'write 'function) === (documentation 'write 'function)

如何做到这一点并使之在SBCL中永久存在?

最佳答案

创建别名

您并没有尝试redefine(即更改系统功能的定义) documentation ,而是想用更短的名称定义自己的功能,该功能的作用与系统功能相同。

这可以使用 fdefinition 完成:

 (setf (fdefinition 'doc) #'documentation)

如何在普通Lisp中使您的更改“永久”

没有标准的方法,不同的实现可能会有所不同,但是,一般来说,有两种常见的方法。

将代码添加到init文件中-适用于初学者和临时用户
  • SBCL
  • CLISP
  • Clozure
  • ECL

  • 每次启动lisp时,都会重新评估有问题的代码。

    优点:
  • 易于修改(只需编辑文件)
  • 占用很少的磁盘空间
  • 正常的Lisp调用捕获更改

  • 缺点:
  • 每次启动lisp时都要进行评估(因此,如果代码很慢,则会减慢启动时间)

  • 保存图像-适用于重量级的专业人士
  • SBCL
  • CLISP
  • Clozure
  • ECL-not supported

  • 修改后的lisp世界将保存到磁盘。

    优点:
  • 启动正常运行时间不受影响

  • 缺点:
  • 需要在每次更改时重新转储世界
  • Lisp图像通常是一个大文件(> 10MB)
  • 必须在调用时指定图像
  • 关于common-lisp - 是否为标准Common Lisp函数定义别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252539/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com