아, clojure 말고 lexical closure


꾸준글


프로그래밍 얘기:



(define (point x y)

  (let ((x x)

        (y y)

        )

  

    (define (get-x) x)

    (define (get-y) y)


    (define (add p)

      (point

       (+ x (send 'get-x p))

       (+ y (send 'get-y p))))

    

    (define (type-of) 'point)

    




    (define (self msg)

      (cond ((eq? msg 'get-x) get-x)

            ((eq? msg 'get-y) get-y)

            ((eq? msg 'add) add)

            ((eq? msg 'type-of) type-of)

            (else (error "unknown message " msg))))

    

    self))