[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: is too an application
This won't explain why, but if you write something like this:
(lambda x (send test1 . x))
you should be okay.
Hope that helps.
Robby
Quoting "Greg Pettyjohn":
> Suppose I want to save a call to an inherited method into a hash table.
> The procedure (another method) that does this is called "add-method"
> The problem is that the inherited method takes zero or more args
> and so I end up with an expression like this:
>
> (define test-client%
> (class (make-client test%)
> (inherit add-method test1 test2)
> (super-instantiate ())
>
> (add-method 'test1 (lambda x (apply test1 x)))
> (add-method 'test2 (lambda x (apply test2 x)))))
>
> and an error like this:
>
> #<struct:object:derived-from-definitions-text%>:109:41: class: misuse of
> method (not in application) in: test1
>
> Why is (apply test1 x) any less an application than (test1 x)?
>
> The former is semantically correct since x is a list of args but is rejected
> syntactically, the later would not work semantically, but is syntactically
> accepted by the object system.