level 1
我刚学习不久,想请教: (cons 'a 'b) 和 (cons 'a '(b)) 的区别,多谢多谢。
2013年09月10日 09点09分
1
level 1
(cons 甲 乙) 的作用是创建一个 car 为甲、cdr 为乙的东西。所以:
(cdr (cons 'a 'b)) 等於 b
(cdr (cons 'a '(b))) 等於 (b)
2013年09月12日 11点09分
2
level 7
第一个生成的是点对结果是('a . 'b)
(car ('a . 'b))=>'a (cdr ('a . 'b))=>'b
第二个生成的是列表(list 'a 'b)
(car (list 'a 'b))=>'a (cdr (list 'a 'b))=>(list 'b)
2013年09月13日 03点09分
3
level 13
不清楚
✎﹏ 【Lisp·少帅】 南无阿弥陀佛
--SONY®LT29经典红双囍
2013年09月15日 02点09分
4
level 9
刚刚看错了。
第一个是:(a . b)
第二个是:(a . (b))
=>(a . (b . nil))
=>(a b)
2013年09月15日 03点09分
6
第一个叫点对,第二个叫做列表,其实就是最后一个是nil的点对。列表其实可以表示成点对,只是最后一个是Nil罢了,而且列表是一种简写的表示
2013年09月15日 03点09分
level 5
(cons 'a 'b)会返回(a . b)
(cons 'a '(b))会返回(a . (b))
为什么?因为b是原子,(b)是表。
2013年10月06日 02点10分
8
level 3
后者 大概是 (cons (quote a) (cons b nil))
2013年10月07日 11点10分
9
level 2
你其实是想问'b和'('b)的区别。
区别就是'b就是'b,求值就是b。
'('b)是(cons 'b '()),就是含有'b的一个list。
建议楼主去看the little schemer
2013年10月12日 06点10分
10