我如何要求 Lisp 编译器忽略(标签种类)函数?

2024-01-10

我盯着斯蒂尔的Common Lisp 语言直到我脸色发青,仍然有这个问题。如果我编译:

(defun x ()
  (labels ((y ()))
    5))
(princ (x))
(terpri)

有时候是这样的:

home:~/clisp/experiments$ clisp -c -q x.lisp
;; Compiling file /u/home/clisp/experiments/x.lisp ...
WARNING in lines 1..3 :
function X-Y is not used.
Misspelled or missing IGNORE declaration?
;; Wrote file /u/home/clisp/experiments/x.fas
0 errors, 1 warning
home:~/clisp/experiments$ 

很公平。那么如何让编译器忽略函数 y 呢?我试过这个:

(defun x ()
  (labels (#+ignore(y ()))
    5))
(princ (x))
(terpri)

它起作用了:

home:~/clisp/experiments$ clisp -c -q y.lisp
;; Compiling file /u/home/clisp/experiments/y.lisp ...
;; Wrote file /u/home/clisp/experiments/y.fas
0 errors, 0 warnings
home:~/clisp/experiments$ 

但不知何故,我不认为警告暗示我应该这样做。

我该怎么办?


GNU CLISP 要求您declare http://www.lispworks.com/documentation/HyperSpec/Body/s_declar.htm函数为ignored http://www.lispworks.com/documentation/HyperSpec/Body/d_ignore.htm#ignore.

(defun x ()
  (labels ((y ()))
    (declare (ignore (function y)))
    5))

或者(特别是如果这是宏扩展的结果,则取决于用户是否y实际使用与否),

(defun x ()
  (labels ((y ()))
    (declare (ignorable (function y)))
    5))

(无论您希望在哪里写(function y),您可以自由使用读者缩写#'y反而。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何要求 Lisp 编译器忽略(标签种类)函数? 的相关文章

  • Haskell 中的基因编程

    有 GenProg http hackage haskell org package genprog http hackage haskell org package genprog 例如 但这仅涉及数值优化 在本例中找到描述数据的方程 但
  • Jupyter 和 Common Lisp

    我正在尝试安装cl jupyter https github com fredokun cl jupyter common lisp 内核Jupyter http jupyter org 我无法让它工作 当我打开一个新的 lisp 笔记本
  • Common Lisp 中的未绑定变量

    我是 Lisp 新手 正在阅读 ANSI Common Lisp 第 8 章中的文本生成器示例 我按照该示例并在 LET 变量 prec 的范围内定义了一个函数 see let prec defun see symb let pair as
  • Lisp 内部引用工作

    口齿不清是如何做到的quote内部工作 例如 quote 1 1 2 似乎相当于 list 1 list 1 2 这意味着它是如何递归地象征 Head 值的 这个功能是内置的吗 Run equal quote 1 1 2 list 1 li
  • 如何在类Unix操作系统下方便的运行SBCL代码?

    David James 写了问题和答案 我将对其进行编辑以符合 Stackoverflow 标准 使用 SBCL 您可以将 Lisp 代码编译为机器代码 像 Java net C 甚至 C 一样 您将需要运行时 所以有两种方法来编译 Com
  • R 的 C API 中的 SEXP 数据类型到底是什么以及为什么使用它? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道关于 SEXP 的维基百科页面 并且我知道它代表符号表达 我 模糊地 知道 SEXP 是指 Lisp 中的树数据结构的符号 但我
  • 查找 lambda 表达式中的自由变量

    有谁知道如何找出 lambda 表达式中的自由变量 自由变量是不属于 lambda 参数的变量 我当前的方法 这对我毫无帮助 是简单地使用 car 和 cdr 来遍历表达式 我的主要问题是确定一个值是否是一个变量或者它是否是方案原语之一 有
  • CLISP - 反转简单列表

    我必须反转简单 单维 列表的元素 我知道有一个内置的反向函数 但我不能用它来做这个 这是我的尝试 defun LISTREVERSE LISTR cond lt length LISTR 2 LISTR listr is 1 atom or
  • 我应该在 Common Lisp 中使用哪些正则表达式库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • LISP 中的变量和符号有什么区别?

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

    我想做的是 defgeneric fn x defmethod fn x integer 1 Positive integer defmethod fn x integer 1 Negative integer 我想要一个可以与任意类型说明
  • 宏扩展可以包含(声明...)表达式吗?

    Common Lisp Hyperspec 规定 宏形式不能扩展为声明 声明表达式必须显示为它们引用的形式的实际子表达式 我对 扩展到 的含义感到困惑 由于显而易见的原因 如下宏将不起作用 defmacro optimize fully d
  • 人们可以放心地忽略宏和内置宏之间的区别吗?

    我从 Clojure 开始 这也是我的第一个 lisp 显然有很多东西需要吸收 为了减轻认知负担 我尝试找到我可以安全地忽略的部分 目前 人们能否安全地以相同的方式处理带有宏的表单和带有内置函数的表单 或者是否会出现以后出现的陷阱 换句话说
  • 对于案例,这些表达案例的方法中哪种最好?

    这些都有效 defun testcaseexpr thecase case thecase foo format t matched foo bar format t matched bar funk format t matched fu
  • Common Lisp 鼠标位置与 ltk

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

    我正在尝试在 ASDF 中运行测试 如下所示 foo asd defsystem foo tests depends on foo fiveam components module tests components file main pe
  • (cons 'a (cons 'b 'c)) 和 (cons 'a '(b.c)) 之间的 Lisp 区别

    有什么区别 cons a cons b c A B C and cons a b c A B C 我需要使用 cons 创建以下列表 a b c 所以我试图理解 是什么 代表 L E 我有以下内容 cons cons a b c 但它产生
  • F# 类型提供程序与 Lisp 宏

    我一直在阅读有关 F 3 0 类型提供程序的内容 例如here http msdn microsoft com en us library hh156509 aspx 并且它们似乎基于一种编译时代码生成 在这方面我想知道它们与 Lisp 宏
  • 为什么在 emacs-lisp 中的函数参数之前使用#'?

    我熟悉 Emacs Lisp 但不熟悉 Common 或任何其他 Lisp 一些 Lisp 程序员建议 例如emacs 的基本功能 https stackoverflow com questions 17076646 a basic fun
  • 从 CCL 检索(加载)源代码?

    我打了电话 load code lisp 用CCL 然后不小心删除了code lisp 有什么办法可以找回源代码吗 CCL 在内存中是否有它 这是一个非常特殊的功能 这里只为克洛祖尔CL 该代码在其他地方不起作用 这在 CCL IDE 中对

随机推荐

  • 如何让 Clang 忽略特定块中的特定警告?

    我正在检查带有类型特征的数值范围 无符号类型会生成警告 Comparison of unsigned expression gt 0 is always true 如何禁用特定代码范围内的某些警告 我用的是海湾合作委员会风格 pragma与
  • 如何将AppBarLayout的高度设置为0

    我的布局文件如下
  • 如何使用 C++ 在 WinUI 3 中获取页面上的主窗口句柄

    我正在使用 C 开发 WinUI 3 演示 我想要一个主窗口处理程序或本机窗口处理程序来打开一个Picker在一个Page 我正在使用的代码块工作正常Window但它不起作用Page auto windowNative this gt tr
  • 上传ipa到googledrive

    我的要求是 如果我在谷歌驱动器或共享点中上传 ipa 文件 那么测试人员应该能够从驱动器将 ipa 安装到他的设备中 而无需使用 iTunes 是否可以 我可以通过在服务器中部署 ipa plist 和 index html 文件来实现这一
  • Git 在日志中显示所有分支(但不显示存储)

    我有一个 Git 别名 它扩展为 git log graph oneline all decorate 根据man git log有几个可疑的选项 not and branches 但我无法让它正常工作 我应该如何编辑它来隐藏隐藏的东西 F
  • 打印未从页面顶部边缘开始

    我正在尝试打印一些strings using Graphicss DrawString 我已将边距设置为printdocument但不从页面的原点开始 我已经设定margins to 0 0 0 0 但不知怎的 它打印在页面顶部边缘下方半厘
  • 现在无法查询选项卡(用户可能正在拖动选项卡)

    我有一个 chrome 扩展 可以通过以下代码访问活动选项卡 chrome tabs query active true result gt 这一直工作得非常好 直到最近的更新 我不再能够查询该选项卡 并在控制台中打印以下错误 Tabs c
  • Cocoa OSX:如何使图像可拖动

    我有一个带有图像的面板 我想让它可以通过 拖动 将文件 不是图像 图像仅作为文件的图标 复制到文件夹中应用程序外部的图像以及接受拖入其中的文件的任何其他应用程序 例如 Finder 我怎样才能做到这一点 我实施了NSDraggingSour
  • iOS7 中固定页眉和页脚的网页滚动问题

    这对我来说很难解释 但我会尝试 首先 我的网页在 iOS6 x Android W7 中的 mobilebrowser 以及桌面浏览器 IE9 Safari 和 Chrome 上运行 该问题发生在iOS7中的苹果移动Safari浏览器中 我
  • 如何在cordova android应用程序中使用proguard

    我有一个完成的 cordova 项目 我想使用 proguard 来防止其他人对 APK 进行逆向工程 但我在这方面遇到了困难 In http developer android com tools help proguard html h
  • 无法执行简单的导航到查看和返回 SwiftUI 导航栏按钮

    我正在尝试使用 SwiftUI 进行从一个视图到另一个视图的简单导航 一个栏按钮项目 我尝试了三种不同的方法来调用新视图 在正文视图中使用 Button 可以 但在导航中使用 NavigationBarItems bar 以两种不同的方式失
  • 如何在android中创建自定义通知

    我需要创建一个自定义通知而不是 android 中的默认通知 当前通知有一个图标 标题和消息 如下图所示 我想要它像这样定制 我怎样才能做到这一点 通知视图 普通视图 普通视图中的通知出现在高度高达 64 dp 的区域中 即使您创建具有大视
  • 如何将两个函数传递给react中的onClick事件

    我想将两个函数传递给onClick事件是handleSubmit and handleDelete to the HomePage js来自HomeItem js 这是我的错误 No duplicate props allowed reac
  • C# - 通过相同的方法传递不同类型的对象

    原始问题 所以我有这 3 个对象 public class obj1 public int Id get set public string Name get set public class obj2 public int AccNum
  • Android 版 Google 登录:无法解析 RC_SIGN_IN

    我正在尝试通过移动应用程序通过后端服务器进行身份验证 我正在关注这个文档 https developers google com identity sign in android sign in https developers googl
  • 使用 Google Apps 脚本标记 Gmail 邮件(不是整个线程)

    是否可以搜索带有 应用程序脚本队列 标签的消息并为这些特定消息 而不是整个线程 提供新标签 当我使用 GmailApp search label Apps script queue 时 我收到请求的邮件 但是当我为这些邮件分配新标签时 该线
  • 如何包含动态时间?

    我正在尝试提取有关时间段的日志 当没有时 下面的程序运行得很好 给出小时数 并提取该范围内的日志 但现在我还包括动态给出的开始和结束 即说之间8 am to 8pm or 6am to 8am等等 我怎样才能得到它 当前程序中的任何编辑也可
  • 在 SwiftUI 的 Picker 中添加新元素

    我找不到如何在 SwiftUI 的选择器视图中添加某些元素 在我的示例中 我想在单击按钮时在选择器中添加 Z 值 struct ContentView View State var values String A B C State pri
  • hash( (-2,2) ) == hash( (2,-2) ) 返回 True (Python)

    所以 这很有趣 Python 的hash臭名昭著的回报True on hash 1 hash 2 正如其他地方所讨论的 https stackoverflow com questions 10130454 why do 1 and 2 bo
  • 我如何要求 Lisp 编译器忽略(标签种类)函数?

    我盯着斯蒂尔的Common Lisp 语言直到我脸色发青 仍然有这个问题 如果我编译 defun x labels y 5 princ x terpri 有时候是这样的 home clisp experiments clisp c q x