[問題] 請問lisp的變數傳遞

看板PLT (程式語言與理論)作者 (e....)時間17年前 (2007/09/07 03:59), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
請問一下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
call by name呢 ~( ̄▽ ̄||;)~
09/07 11:10, 1F

09/07 11:11, , 2F
他到是有點像全部當字串 用recursive..
09/07 11:11, 2F

09/07 16:05, , 3F
call-by-object-reference
09/07 16:05, 3F
chengken:轉錄至看板 WhoAmI 07/24 20:38
文章代碼(AID): #16u5miEF (PLT)
文章代碼(AID): #16u5miEF (PLT)