
(define (make-light location color)
  (lambda (selector)
    (case selector
      ((location)
       (lambda ()
         location))
      ((color)
       (lambda ()
         color))
      ((get-direction)
       (lambda (intersection-point)
         (normalize (v- intersection-point location))))
      ((display)
       (lambda ()
         (display "location ") ((location 'display))))
      (else
       (render-error "make-light" "Invalid selector: " selector)))))
