作者Anathema (e....)
看板PLT
标题[问题] 请问lisp的变数传递
时间Fri Sep 7 03:59:39 2007
请问一下common lisp的变数传递是用什麽方式实做的
一开始我猜是call-by-reference,可是变数在function下的操作没有办
法带到上一层:
> (setq s '(1 2 3 4 5))
(1 2 3 4 5)
> (defun qw(x) (pop x))
QW
> (pop s)
1
> s
(2 3 4 5)
> (qw s)
2
> s
(2 3 4 5)
可是若是call-by-value也不对,因为setf在function内的操作可以带到上
一层:
> s
(2 3 4 5)
> (defun qw(x) (setf (rest s) nil))
QW
> (qw s)
NIL
> s
(2)
所以搞不太懂他是怎麽做的...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.79.153
1F:→ sunneo:call by name呢 ~( ̄▽ ̄||;)~ 09/07 11:10
2F:→ sunneo:他到是有点像全部当字串 用recursive.. 09/07 11:11
3F:推 caml:call-by-object-reference 09/07 16:05
※ chengken:转录至看板 WhoAmI 07/24 20:38