[問題] 請問lisp的變數傳遞
請問一下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
→
09/07 11:10, , 1F
09/07 11:10, 1F
→
09/07 11:11, , 2F
09/07 11:11, 2F
推
09/07 16:05, , 3F
09/07 16:05, 3F
※ chengken:轉錄至看板 WhoAmI 07/24 20:38
PLT 近期熱門文章
PTT數位生活區 即時熱門文章