关于scheme的quote

本文探讨了Scheme语言中如何使用quote来区分表达式的求值和数据表示。通过quote可以明确标识希望将identifier视为符号而非变量,或将list视为数据而非函数调用。

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

scheme很简洁,喜欢用同一种形式来表达不同的概念,比如一部分表达式求值 和一部分数据的表示就采用了同一种形式,所以为了区分到底是表达式求值还是表示数据,quote就登场了。

对于一个identifier,如果它用在expression的地方,那么它就会被当作variable在求值,但是如果在这个地方我们想要用这个identifier本身(即把它作为symbol),抑制它的求值,就需要在identifier之前加上quote( ' ).

对于一个list,如果它用在expression的地方,scheme将会把它作用function的application来求值,如果我们想在这里使用这个list本身,同样需要在它之前加上quote( ' ).

有意思的事,如果一个list被作用数据来使用的时候,里面的子list同时也都作用数据来使用了,也就是说都不再求值了,所以对于一个作为数据使用的list内的identifier来说,只能也被看作为数据(symbol)

几个例子

'name

'(name)

'('name) ;(这个有意思,里面的'name其实也是个list,car是quote,cdr是(name))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值