@screwlisp The origin of Scheme (AIM-349) was Sussman & Steele trying to make an Actors implementation, and it turned out that was just lambda with closures. So a common way to make Scheme objects is:
(define (make-actor data)
(let ((data data))
(lambda (msg . args)
(case msg ...) )))
And you might have the final else report all usage as an error, so the user doesn't have to read the code to figure out how to use it.
#scheme #gofai