This is probably a pretty far-out idea but I wonder if it's possible.

I'm working on the concept of proxy objects representing remote
tinyclos objects.  After figuring out how to create the proxy when one
side attempts to "send" an object to the other side, next problem is
how to arrange for all relevant generic functions to be implemented
for the proxies, to send the remote method invocation.  I can have the
receiver find out what methods are implemented for a given class, the
first time it notices that the class exists, but then methods could
still be added later.  It would be cool if the proxy method
implementations could be defined on an as-needed basis.

Suppose r is a proxy object and bangarang is a method defined on the
other side of the link:

(handle-exceptions exn
                     (begin
                       (display "Went wrong: ")
                       (display
                        ((condition-property-accessor 'exn 'message) exn))
                       (newline))
(bangarang r))
Went wrong: unbound variable
Warning: the following toplevel variables are referenced but unbound:
  bangarang

I could catch the unbound variable exception specifically right? but I
guess it would involve a string compare (string=?
((condition-property-accessor 'exn 'message) exn) "unbound variable")
which is not efficient.  And then what?  "All error-exceptions (of the
kind exn) are non-continuable."  I'd be wanting to do another remote
query to confirm that the unbound symbol is really an applicable
method, bind it locally to a procedure that will call the remote
method, and then call it again with the same arguments.  Next time
that same method is called, it's already bound, so this
exception-catching only happens once, and would be a way to achieve
the lazy binding.


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to