summaryrefslogtreecommitdiffstats
path: root/share/txr
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-10-09 19:08:02 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-10-09 19:08:02 -0700
commit2d173febd859a05708e14273397df61f75bea895 (patch)
tree966808b96729f9f367301f88256376b66d1738f6 /share/txr
parent0bb1f829c745d94386f17f37ed5568a20c7243e9 (diff)
downloadtxr-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/txr')
-rw-r--r--share/txr/stdlib/struct.tl4
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))