lisp 里的基本的数据结构  list

而我们常说  list  就是有cons cell  连接起来的

那么cons 与list 到底是什么区别呢?

list  是 列表, list 的结尾是以 nil 结尾的。

cons 是  结尾不是 nil 的列表

cons 因为结尾不是nil ,所以很多系统自带的功能函数是不能对cons 进行计算的。

所以cons 在整个开发上是很少使用的。但是没有cons 是远远不行的。

例如:

CL-USER> (cons 1 (cons 2 (cons 3 nil)))
(1 2 3)
CL-USER> (cons 1 (cons 2 3))
(1 2 . 3)
CL-USER> (length (cons 1 (cons 2 (cons 3 nil))))
3
CL-USER> (length (cons 1 (cons 2 3)))
; Evaluation aborted on #.
CL-USER>

length 函数是无法对congs 统计长度的。

但是可以对list 统计长度。

例如:
CL-USER> (equal '(1 2 3) (cons 1 (cons 2 (cons 3 nil))))
T
CL-USER> (equal '(1 2 3) (cons 1 (cons 2 3)))
NIL
CL-USER>

到这里,应该就很明白了。

CL-USER> (setf x (cons 2 3))     点对 cons 
(2 . 3)
CL-USER> x
(2 . 3)
CL-USER> (car x)
2
CL-USER> (cdr x)
3
CL-USER> (setf y '(2 3))     列表

(2 3)
CL-USER> (car y )
2
CL-USER> (cdr y)
(3)
CL-USER>

对比看看 cdr  的求值是不同的list 的cdr 求的是 列表

cons 的cdr 求值是值 。

cons   在编程上用的比较多的应该是点对
(2 . 3)
可以很便利的标识某种数据结构。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-751819/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/133735/viewspace-751819/

cons vs list相关推荐

  1. boost::fusion::cons用法的测试程序

    boost::fusion::cons用法的测试程序 实现功能 C++实现代码 实现功能 boost::fusion::cons用法的测试程序 C++实现代码 #include <string& ...

  2. int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别

     加有const关键字的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = # 1.       可以读自己 2.       可以通过*p改自己 3.       可以 ...

  3. (cons '(贰 . 输入/输出) 《为自己写本-Guile-书》)

    (car <为自己写本-Guile-书>) 这个世界上,有很多人讨厌 Lisp 语言.Guile 是 Sheme 的一种方言,而后者是 Lisp 的一种方言,因此 Guile 自然也会被这 ...

  4. java consumer.poll_java – 无法在kafka consumer下设置’max.poll.records’,其中cons.poll仍然返回分区下的所有记录...

    我创建了多线程消费者应用程序来处理各种分区. 查看各种博客,我开始了解'max.poll.records'属性,以便控制来自给定主题,分区的记录集.(因此它可以很快从记录循环中出来,因此调用cons. ...

  5. Lisp基础函数:car, cdr, cons...

    Lisp中car,cdr和cons都是基础函数.cons用于构造lists,car和cdr用于分割lisp. 奇怪的命名 cons函数的名称并非没有含意:它是单词'construct'的缩写.car是 ...

  6. (cons '(壹 . 命令行程序界面) 《为自己写本-Guile-书》)

    (car <为自己写本-Guile-书>) 前言中,我说要写一个文式编程工具.它的名字叫 zero,是个命令行程序,运行时需要由使用者提供一些参数与文式编程元文档路径.zero 读取元文档 ...

  7. (cons '(肆 . 数据类型) 《为自己写本-Guile-书》)

    (car <为自己写本-Guile-书>) 所谓数据类型,是数据集合以及定义在这个数据集合上的一组运算.从大部分计算机的 CPU 的角度来看,存储器中的数据,只是以字节为单位的二值信号,并 ...

  8. append/cons car/cdr reduce

    理解列表的关键是理解点对单元,虽然只要是点对单元都需要用括号引用起来,但是我们平常说的list是特指那些:后面的位置我们不直接存字面值了,改为地址,比如下一个点对的引用,所以当CDR为后续点对的链接或 ...

  9. Pros Cons

    pros and cons 赞成与反对,同意与不同意,优点与缺点 pros, cons 本身就是一个词,不是任何词的缩写. 所以不是 profits ,conservative 的缩写

  10. 理解lisp中的cons

    列表是Lisp的核心数据结构及语法.在Lisp里面,列表的存储方式比较特别,一个列表通常由1个或N个cons来组成的.那个list又与cons是什么关系呢?搞清楚之前,我混乱了许久,读过很多文档及实作 ...

最新文章

  1. stm32l0的停止模式怎么唤醒_汇聚力量,守护安全:2020 “AnQ唤醒云课堂”圆满收官!...
  2. 手表可测血压,耳机支持颈椎保护……这届电子设备越来越“养生”了
  3. 网站被降权后该进行检查哪些问题?
  4. iviewui php,Vue UI框架对比:Element UI、Ant Design Vue、iView
  5. Android自定义Shape
  6. Lucene学习总结之五:Lucene段合并(merge)过程分析
  7. C# Winform 使用二维码
  8. 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)...
  9. More Effective C++ (限制类的对象数量)
  10. c# 在winform中为DataGridView头部标题添加ContextMenuStrip菜单
  11. 这三款提升工作效率的小工具,你都用过吗?
  12. 买个社区团购小程序多少钱呢?微信社区团购小程序怎么做
  13. UltraEdit如何激活
  14. MATLAB图像灰度图处理
  15. google s2 java开发文档
  16. vasp计算压电系数_求助DFTP算出来的压电系数
  17. 《达摩克利斯之剑 》
  18. python 通讯录 字典_Python实现命令行通讯录
  19. 多元线性回归哑变量设置方法
  20. 苹果(maccms V10) Python 采集豆瓣评分直接入库。

热门文章

  1. 一次性纸杯包含的测试点【杭州多测师】【杭州多测师_王sir】
  2. 2BizBox-ERP那点事儿系列之8
  3. nyoj284 坦克大战(dijkstra(bfs+优先队列))
  4. php bearer token,接口认证方式:Bearer Token
  5. 学Python很枯燥怎么办
  6. OpenCV-Python 中文教程3——把鼠标当画笔
  7. 已经2022年了为什么还是有人不知道网上投稿发新闻的方法?
  8. 免费的视频格式转换器
  9. md: kicking non-fresh sda6 from array!
  10. MAT分析OOM dump文件方法