Arc Forumnew | comments | leaders | submitlogin
4 points by fallintothis 5388 days ago | link | parent

Tends to be a Lisp gotcha with quoted things, which act more like pointers than explicit copies.

  $ mzscheme
  Welcome to MzScheme version 360, Copyright (c) 2004-2006 PLT Scheme Inc.
  > (define (foo s)
      (let ((a '(3)))
        (set-car! a (cons s (car a)))
        (car a)))
  > (foo 3)
  (3 . 3)
  > (foo 3)
  (3 3 . 3)
Note that

  arc> (def foo (s) (let a (list 3) (= (car a) (cons s (car a)))))
  #<procedure: foo>
  arc> (foo 3)
  (3 . 3)
  arc> (foo 3)
  (3 . 3)
since list copies data.


1 point by akkartik 5387 days ago | link

Ok, makes sense. Thanks!

-----