为标准 Common Lisp 函数定义别名?

2023-11-25

据说 Lisp 能够重新定义其核心功能。 我想为该函数定义一个别名cl:documentation函数,使得

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

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


创建别名

你并不想redefine(即更改系统功能的定义)documentation,您想用更短的名称定义自己的函数,该函数将执行与系统函数相同的操作。

这可以使用以下方法完成fdefinition:

 (setf (fdefinition 'doc) #'documentation)

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

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

将代码添加到初始化文件 - 适合初学者和临时用户

  • SBCL
  • CLISP
  • Clozure
  • ECL

每次 lisp 启动时,都会重新计算有问题的代码。

Pro:

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

Con:

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

保存图像 - 适合重量级专业人士

  • SBCL
  • CLISP
  • Clozure
  • ECL - 不支持

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

Pro:

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

Con:

  • 每次更改都需要重新转储世界
  • Lisp 图像通常是一个大文件 (>10MB)
  • 必须在调用时指定图像
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为标准 Common Lisp 函数定义别名? 的相关文章

  • Clojure let 与 Common Lisp let

    在 Common Lisp 中 let使用绑定列表 即 let var1 1 var2 2 虽然 Clojure 使用向量来代替 let a 1 b 2 除了可读性之外 Clojure 使用向量还有什么具体原因吗 您可以在以下位置找到 Ri
  • 为什么 Common Lisp 中冒号位于变量之前

    Common Lisp 中变量前面的冒号语法是什么意思 我见过这样的程序 我将在这里从大量函数中展示一些示例代码 defun expand successorf node mapcar lambda action state cost le
  • SBCL:将 Hunchentoot 应用程序部署为可执行文件

    我开始使用 SBCL Common Lisp 并希望使用 Hunchentoot 开发一个小型 Web 应用程序 为了便于部署 我计划使用 sb ext save lisp and die 将所有内容保存在二进制文件中 因为我可以忍受大输出
  • 更改列表的第 n 个元素

    我想更改列表的第 n 个元素并返回一个新列表 我想到了三个相当不优雅的解决方案 defun set nth1 list n value let list2 copy seq list setf elt list2 n value list2
  • 使 clos 对象可在 lisp 中打印

    如果你想让 common lisp 中的 CLOS 对象可打印 可读打印 你如何在不使用除了 print 和 read 之外的任何东西的情况下做到这一点 至少在我的解决方案中 有两个部分可以做到这一点 但是您将需要这个功能 感谢 cl pr
  • 如何在 SLIME 的 REPL 中获得 Common Lisp 的语法高亮显示?

    我想学习 Common Lisp 并通过 emacs 包管理器安装了 emacs 24 3 和 slime 在 slime REPL 语法高亮中不起作用 另一方面 当我启动 Lisp Mode 在 slime REPL 中 时 表达式的值不
  • 在 LISP 中实现基本库函数(手动)

    有什么方法可以定义函数my list my cons my append其执行类似的功能list cons and append分别 否则哪里可以找到这些功能的实现呢 Thanks 对于my list和my append 解决方案是 def
  • 在 LISP 中使用“ash”执行二分查找?

    所以 我现在正在阅读 Land of Lisp 事实证明 Lisp 与我见过的其他编程语言有很大不同 无论如何 本书提供了一些我们要输入到 CLISP REPL 中的代码 defparameter small 1 defparameter
  • Common Lisp 中的未绑定变量

    我是 Lisp 新手 正在阅读 ANSI Common Lisp 第 8 章中的文本生成器示例 我按照该示例并在 LET 变量 prec 的范围内定义了一个函数 see let prec defun see symb let pair as
  • Common Lisp 中的(随机)不那么随机?

    好的 最后一个问题 我将用 Common Lisp 完成我的猜数游戏 D 每当游戏开始 或者在第一个游戏之后开始新游戏 时 都会调用以下函数 Play the game defun play If it s their first time
  • Lisp 中的数组与列表:为什么下面的代码中的列表要快得多?

    我在解决时得到了意想不到的结果欧拉计划中的问题 75 https projecteuler net problem 75 我的代码确实找到了正确的解决方案 但它的行为很奇怪 我的解决方案包括遍历毕达哥拉斯树 巴宁矩阵 https en wi
  • 如何定义和使用 Common Lisp 包(库)?

    我在几个 Lisp 源文件中开发了一些 Common Lisp 函数 我希望这些函数可以轻松地供我编写的其他函数使用 或者如果我认为它们对其他人有用的话 可以在 github 上提供 现在 我只是将它们放在一些预定义的文件夹中并使用 req
  • LISP 中的变量和符号有什么区别?

    从范围上来说 内存中的实际实现 语法 例如 if let a 1 a 是变量还是符号 约尔格的回答指出了正确的方向 让我补充一点 我将讨论与 Common Lisp 类似的 Lisp 作为数据结构的符号 符号是 Lisp 中真实的数据结构
  • 使用包阴影符号

    例如 我有这个包定义 它遮蔽了 COMMON LISP LISTEN defpackage shadows use common lisp shadow listen export listen 然后我想使用另一个包中的这个包 比如说 de
  • Common Lisp 鼠标位置与 ltk

    我正在 Common Lisp 中制作一个简单的小程序 我想使用鼠标移动来控制它 我用 LTK 作为窗口 我找不到任何可以检索鼠标位置的函数 例如 Emacs Lisp 有 鼠标像素位置 我发现这在罗塞塔代码上 https rosettac
  • 有没有一种简单的方法可以使用 Common Lisp 中的 Python 库?

    在编写 Common Lisp 代码时我真正怀念的一件事是访问 Python 库 包括标准库和第三方模块 CLPython 提供了 Python 功能的有限子集 这阻止了大多数库的使用 因此这对我来说并不是很有用 我希望能够从 Common
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • Common Lisp——为什么这个符号不是外部的?

    我正在尝试在 ASDF 中运行测试 如下所示 foo asd defsystem foo tests depends on foo fiveam components module tests components file main pe
  • SLIME 和 SWANK 入门:Lisp 连接意外关闭:连接被远程对等点断开

    我试图使用 slime connect 函数通过 sbcl 访问远程服务器 我遵循了 slime mov 电影中的所有步骤马可 巴林格 http www guba com watch 30000548671但在为 slime 创建 ssh
  • 递归分割列表函数 LISP

    split list 函数接受一个列表并返回一个由两个列表组成的列表 其中两个列表由输入的交替元素组成 我写了以下内容 defun split list L cond endp L list NIL NIL t let X split li

随机推荐

  • void * 类型化函数参数

    我有一个功能 void Client void threaData 你能告诉我一些关于void threadData范围 当你使用void 参数以及为什么 void 是一个通用指针 可以指向任何对象类型 上面的函数可以接受任何类型的指针 也
  • Mongodb 崩溃收到信号 15(终止)

    我的 mongodb 服务器突然收到信号 15 已终止 我不知道为什么 mongodb 崩溃了 以下是日志消息 Mon Jun 27 07 33 31 701 signalProcessingThread got signal 15 Ter
  • MongoDB聚合项目字符串到ObjectId

    我正在尝试在聚合查询中将十六进制字符串转换为其等效的 ObjectID 我尝试了两种不同的方法 db omvas aggregate project EID let vars id EID in ObjectId id group id E
  • Server.MapPath 和 HostingEnvironment.MapPath 有什么区别?

    有什么区别吗Server MapPath and HostingEnvironment MapPath Does Server MapPath 有什么优势HostingEnvironment MapPath 我最初的问题是在服务器上映射文件
  • 如何使用 GridBagLayout 在 JPanel 中对齐组件中心?

    当我尝试对齐组件时 它要么向左侧移动 要么向右侧移动 所以我只想解决这个问题 并告诉我如何将面板的尺寸设置为 400 x 350 像素 这是我的代码 titleLabel and ResultLabel应居中对齐 public TimeGu
  • 如何在全尺寸窗口中运行 R Shiny App?

    是否可以设置闪亮选项以全视图模式 即最大化窗口 自动打开应用程序 我的用户界面的设计方式只有在全视图浏览时才美观 我的源代码写在两个标准文件中 server R 和 ui R 我对这两个选项都感兴趣 在 1 RStudio 窗口和 2 外部
  • 在 Flutter 中创建带有堆叠列表项的 ListView

    I stumbled upon this design in dribble and in trying to implement it in flutter I was able to create the curves using cl
  • kafka Consumer 0.9向后兼容吗?

    即将推出的 kafka Consumer 0 9 x 是否会与 0 8 Broker 兼容 换句话说 是否可以只切换到新的消费者实现 而不触及其他任何东西 根据文档卡夫卡0 9 0 您不能使用新的消费者从 0 8 x 代理读取数据 原因如下
  • C 中的 fopen 没有 fclose

    如果我使用打开文件会发生什么fopen some n没有打电话的次数fclose on it 可能会出现缓冲区溢出问题吗 如果你继续fopen没有fclose然后最终你的未来会召唤fopen将开始失败 您的程序可用的文件描述符数量有限 请参
  • Python从字符串中解析int

    test1 name1 test2 name2 test3 name45 test4 name1231231 假设我有一堆以 名称 开头的字符串 后跟任意长度的数字 如何解析字符串中的数字 Is regex唯一的方法或者是否有内置模块可以完
  • 为什么convertToFastObject函数使它变得更快?

    我在1 0版本发布后尝试了Dart SDK 并用Dart编写了一个简单的hello world程序 然后 使用 SDK 工具生成了 JavaScript 文件 helloworld dart js 我查看了输出的js代码 我看到有一个名为c
  • 替换字符串中最后一次出现的子字符串

    你怎样才能更换last字符串中是否出现子字符串 正则表达式也可以执行此任务 这是一个可行的示例 它将用 Bumblebee Joe 取代最后出现的 Aquarius text This is the dawning of the age o
  • URL 编码和 HTML 编码 NSString

    他们是编码 解码 HTML 和 URL 的方法 在 Xcode 中 使用 Objective C 吗 NSString stringWithContentsOfFile lt NSString path gt encoding lt NSS
  • IE 在从控制台调用时支持 forEach(...),但在从代码调用时不支持

    我正在控制台运行这个片段 在 IE 中 它会按预期生成输出 在 Cr 和 FF 中运行相同的代码以供参考 确认了行为的一致性 a b forEach function element console log element 但是 当运行以下
  • 使用 Three.js 启用平滑着色

    我正在使用 Three js 使用 MTL 和 OBJ 文件渲染带有纹理的对象 我的代码可以工作 但我的模型显示为平面阴影 如何启用平滑着色 var scene new THREE Scene var mtlLoader new THREE
  • 使用 jQuery 在 5 秒内显示一个 div

    我想在 5 秒内淡入我网站上的 div 另外 我不想使用CSSDisplay none隐藏div 因为这个div非常重要 我想如果用户没有启用JS div将永远隐藏 那么你们能告诉我如何在网站加载时隐藏 div 并使其在 5 秒内可见吗 谢
  • 摆脱匈牙利表示法的最佳方法?

    假设您继承了一个 C 代码库 该代码库使用一个具有 200 个静态方法的类来提供核心功能 例如数据库查找 在该课程的许多噩梦中 大量使用了匈牙利表示法 不好的那种 您会重构变量名称以删除匈牙利表示法 还是会保留它们 如果您选择更改所有变量以
  • Twitter Bootstrap .on('show',function(){});不适用于弹出窗口

    当选择新的弹出窗口时 我试图通过执行以下操作隐藏所有其他弹出窗口 My HTML a btn requests rel popover data placement bottom data original title b Requests
  • 在运行时删除和替换可视组件

    例如 是否可以使用在运行时实例化 有条件 的子类组件来替换和释放 TEdit 如果可以 应该如何以及何时进行 我尝试将父级设置为 nil 并在表单构造函数和 AfterConstruction 方法中调用 free 但在这两种情况下我都遇到
  • 为标准 Common Lisp 函数定义别名?

    据说 Lisp 能够重新定义其核心功能 我想为该函数定义一个别名cl documentation函数 使得 doc write function documentation write function 如何才能做到这一点并使其在 SBCL