You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Common Lisp中#\a、'a与#'a的区别是什么?

Common Lisp中#\a、'a、#'a的区别

这三个写法在Common Lisp中属于完全不同的语法结构,对应不同类型的Lisp对象,具体区别如下:

  • #\a:字符字面量,代表小写字母a本身,属于character类型。你给出的示例中创建元素类型为character的数组时用它做初始值,最终生成的字符数组等价于字符串,所以输出为"aaaaaaaaaa"。
  • 'a:符号(Symbol)字面量,'是特殊操作符quote的简写,'a完全等价于(quote a),作用是阻止对标识符a的求值,直接返回a对应的符号对象。Common Lisp默认读取符号时会自动转为大写,所以示例中二位数组的输出为#2A((A A) (A A))。
  • #'a:函数对象引用,#'是特殊操作符function的简写,#'a完全等价于(function a),作用是获取当前环境中绑定到名字a的函数对象,常用于高阶函数传参场景。如果当前环境中a没有绑定为函数,直接调用该语法会抛出未定义函数的错误。

你可以通过type-of函数直接验证三者的类型差异:

; 验证字符类型
(type-of #\a)
; 验证符号类型
(type-of 'a)
; 先定义函数a再验证函数类型
(defun a () "测试函数")
(type-of #'a)

内容的提问来源于stack exchange,提问作者Pedro Henrique Dadalt de Queir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:06:05