私はスキームが初めてです。次のコードを実行すると
(define lst '(1))
(let ((func1 (lambda lst
(begin (display lst)
lst))))
(begin (display lst)
(func1 lst)))
(1)((1))'((1))
つまり、lst は 4 行目で呼び出されたときのように表示されますが(1)
、関数に渡すfunc1
と になり((1))
ます。ここで正確に何が起こったのですか?