diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-10-09 19:08:02 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-10-09 19:08:02 -0700 |
commit | 2d173febd859a05708e14273397df61f75bea895 (patch) | |
tree | 966808b96729f9f367301f88256376b66d1738f6 /share | |
parent | 0bb1f829c745d94386f17f37ed5568a20c7243e9 (diff) | |
download | txr-2d173febd859a05708e14273397df61f75bea895.tar.gz txr-2d173febd859a05708e14273397df61f75bea895.tar.bz2 txr-2d173febd859a05708e14273397df61f75bea895.zip |
Support curried args in method and meth.
* share/txr/stdlib/struct.tl (meth): Take trailing arguments
and pass them down to method, which now accepts them.
* struct.c (struct_init): Register method intrinsic to the
function method_args instead of the method function.
(method_args_fun): New static function.
(method_args): New function. Behaves like method
function if args is empty, otherwise creates a function
by means of method_args_fun.
* struct.h (method_args_fun): Declared.
* tests/012/oop.tl: New test case.
* tests/012/oop.expected: Updated.
* txr.1: Documented new features in method and
meth, revising the documentation in the process.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/struct.tl | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/share/txr/stdlib/struct.tl b/share/txr/stdlib/struct.tl index 9f643662..ecd1db5d 100644 --- a/share/txr/stdlib/struct.tl +++ b/share/txr/stdlib/struct.tl @@ -230,8 +230,8 @@ (list ,*args))))) (atom ^(make-lazy-struct ',atom (lambda () (list (list ,*qpairs)))))))) -(defmacro meth (obj slot) - ^(method ,obj ',slot)) +(defmacro meth (obj slot . bound-args) + ^[(fun method) ,obj ',slot ,*bound-args]) (defmacro usl (slot) ^(uslot ',slot)) |