作者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