热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

锥形规格

如何解决《锥形规格》经验,为你挑选了1个好方法。



1> Rainer Joswi..:

设置b的车改变了汽车.

你是不是设置carb.您正在设置carb和引用的相同cons单元格a.

CL-USER 1 > (let (a b)
              (setq a (cons 1  2))
              (setq b a)

              (eq a b))
T

说明:

我们有变量ab.

(cons 1 2) 返回一个cons小区

(setq a (cons 1 2))设置一个(cons 1 2)cons单元格的结果.

(setq b a)计算a,返回上面的cons单元格并设置b为cons单元格.

要理解的关键是变量和函数的评估将非原始(不是原始数字,字符,...)对象作为自身返回 - 而不是作为副本.

我假设a和b持有cons对象而不是指向conses的指针.

那是错的.a并且b是变量,它们只指向同一个单一的cons单元格.

"cons构造了包含两个值或指向值的指针的内存对象"

在Common Lisp实现中,类似小数字(fixnums)的东西可能直接存储在cons单元格中.一个不能可靠地通过身份(使用比较数字EQ),并有做数值比较(EQL,=,...).

OTOH,cons细胞不能存储在cons细胞内,因此在内部由指针引用.

您使用的操作:

SETQ:评估第一个form1,结果存储在变量var1中.- >注意它是怎么说的:结果而不是结果的副本.

RPLCA - 这是(setf CAR)实际使用的.:rplaca用对象替换cons的汽车并且cons被修改 - >因此它修改了作为参数传递的cons对象.

评估 - 自执行代码以来,评估规则适用.

进一步了解Lisp的执行模型:

一本旧的Lisp书:约翰艾伦的"LISP解剖".(亚马逊)

一个方案规范,如R5RS.

Lisp是一小部分,一本书解释了Scheme/Lisp的执行模型及其实现.


推荐阅读
author-avatar
sucbenson-lee_905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有