Common lisp学习笔记(5):命名与识别

本文探讨Lisp语言中符号的独特作用及其如何简化编程过程。符号不仅作为标识符使用,还能直接求值返回自身,实现对值的命名。此外,文章还介绍了符号的唯一性和多对一的引用特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Successful Lisp》Chapter 3 - Essential Lisp in Twelve Lessons
Lesson 5 - Naming and Identity读书笔记.

符号即名称

一个符号就是一个名称,即:符号可以求值返回自身.这种使用符号其名的特性,使得lisp在一些特殊情况下不需要像其它没有符号这种数据类型的语言一样,由语言的使用者思考怎样描述与表达所谓的字面意思,并构造这些数据的操作方法,因为符号不仅提供了它绑定的对象用来使用,还提供了自己的名字以供使用.

符号是唯一的

同名的符号是唯一的

(eq 'a 'a)
->T
(eq 'ls 'LS);注意,CL不区分大小写
->T
(eq '我 '我)
->T
(setq 我 '某人)
->大爷
(eq 我 '某人)
->T

符号可以为值命名

正如之前解释过的,符号与值的关系,犹如标签与物件一般,标签上写着物件的名字.根据求值规则或应用环境的不同,CL的符号会表现出多个值,最常见的同一个符号因求值规则,既能提供函数值又能提供变量值(如下例),这是因为CL拥有两个命名空间,而CL因此被分为Lisp-2类语言.符号还可以同时拥有文档,属性表和打印名称.符号的文档被创建用来描述符号.

(setq first '第一)
->第一
(first '(1 2 3))
->1
first
->第一
(documentation + 'function) ;通过广义函数documentation获得符号+的函数值的文档
-> nil

同一个值可以拥有多个名字

好比王小明有着小名小明以及明明.
对于符号来说就是多对一的关系,用C语言的思维来讲,就是多个指针指向同一块内存地址.不过Lisp隐藏了几乎所有与计算机硬件有关的细节.当对两个符号使用谓词eq返回nil时,我们可以确定这两个符号本质上是同一个东西,也就是两个指针指向同一块内存,而不是装着相同数据的两块内存.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lockedkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值