Common Lisp:#+ nil是什么?

鲁道夫·基督

前几天(也许是昨天),我对#+nilhttps://github.com/billstclair/defperson/blob/master/defperson.lisp#L289中找到的这种读取条件感到非常困惑

经过一番深思熟虑,我得出的结论是,这是注释代码的非常简单的方法有人可以确认吗?

也许我的假设是完全错误的。无论如何,预先感谢。

雷纳·乔斯维格

参见CLHS 2.4.8.17 Sharpsign Plus

为了对来自输入的读取表达式进行条件化,Common Lisp使用功能表达式

在这种情况下,它已用于注释表单。

这是读者的一部分。#+查看下一个项目(通常是具有相同名称的关键字符号)是否是list的成员*features*如果是,则正常读取下一个项目,否则,将其跳过。通常:NIL不是该列表的成员,因此将跳过该项目。因此,它对Lisp隐藏了表达式。可能存在一个Lisp实现,但无法实现NIL新的Lisp实现它可能:NIL*features*列表带有符号,以指示实现的名称。

NIL默认情况下,类似功能会在keyword包装中读取

  • #+NIL- >外观为:NILcl:*features*
  • #+CL:NIL- >外观为CL:NILcl:*features*

例子

(let ((string1 "#+nil foo bar"))             ; string to read from

  (print (read-from-string string1))         ; read from the string

  (let ((*features* (cons :nil *features*))) ; add :NIL to *features*
    (print (read-from-string string1)))      ; read from the string

  (values))                                  ; return no values

它打印:

BAR 
FOO 

请注意,Common Lisp还有其他方法可以注释掉表单:

; (sin 3) should we use that?

#| (sin 3)  should we use that?
   (cos 3)  or this?            |#

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Common Lisp中的NULL和NIL之间的确切区别是什么?

来自分类Dev

Common Lisp中的环境目的是什么?

来自分类Dev

Scheme默认对象的Common Lisp等效项是什么?

来自分类Dev

Common Lisp / SLIME / SBCL的安装例程是什么?

来自分类Dev

Scheme默认对象的Common Lisp等效项是什么?

来自分类Dev

为什么FEXPR被丢弃在Common Lisp中?

来自分类Dev

在Common Lisp中,编写定义类的宏的最佳方法是什么?

来自分类Dev

在Emacs和SLIME中调试Common Lisp的有效方法是什么?

来自分类Dev

在此Common Lisp示例中,套接字关闭的目的是什么?

来自分类Dev

排队执行函数调用的最简单的Common Lisp惯用法是什么?

来自分类Dev

什么是python的argparse的common-lisp类似物?

来自分类Dev

(组成)在Common Lisp中

来自分类Dev

Jupyter和Common Lisp

来自分类Dev

Common Lisp中的'()vs()

来自分类Dev

#ifndef在Common Lisp中

来自分类Dev

〜|的含义 以Common Lisp格式

来自分类Dev

在Common Lisp中,如何定义一个宏扩展为空(而不是`nil`)?

来自分类Dev

在Common Lisp中,如何定义一个扩展为无(而不是`nil`)的宏?

来自分类Dev

Common Lisp中的功能范围

来自分类Dev

使用Common Lisp读取文件

来自分类Dev

如何构建Common Lisp项目?

来自分类Dev

使用Common Lisp Apache fastcgi

来自分类Dev

将此翻译为Common Lisp

来自分类Dev

更改-在Common Lisp中变为+

来自分类Dev

Common Lisp中的矩阵乘法

来自分类Dev

Common Lisp-模式匹配

来自分类Dev

Common Lisp中的动态绑定

来自分类Dev

计算Common Lisp宏的参数

来自分类Dev

计算Common Lisp宏的参数