From 8ae0ab927109e7af65dca833ad410756fb922b71 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 23 May 2025 16:52:37 +0200 Subject: [PATCH] improvement, start fixing - should work with more than 2 params --- decons.lisp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/decons.lisp b/decons.lisp index 84333a1..acaeb61 100644 --- a/decons.lisp +++ b/decons.lisp @@ -63,10 +63,12 @@ ;;;; rapply and other recursive stuff (defun rapply (op &rest args) - (if (null (cadr args)) + (if (null (cdr args)) (rcall op (car args)) ;(apply #'rapply (lambda (x) (funcall op (car args) x)) (cdr args)) - (apply #'rapply (rlambda op (car args)) (cdr args)) + ;(apply #'rapply (rlambda op (car args)) (cdr args)) + ;(funcall op (car args) (apply #'rapply op (cdr args))) + (rcall2 op (car args) (apply #'rapply op (cdr args))) )) (defgeneric rcall (op arg) @@ -74,6 +76,12 @@ (:method (op (arg list)) (mapcar (lambda (i) (rcall op i)) arg))) +(defgeneric rcall2 (op arg1 arg2) + (:method (op arg1 arg2) + (rcall (lambda (j) (funcall op arg1 j)) arg2)) + (:method (op (arg1 list) arg2) + (mapcar (lambda (i) (rcall (lambda (j) (funcall op i j)) arg2)) arg1))) + (defgeneric rlambda (op arg) (:method (op arg) (lambda (j) (funcall op arg j))) (:method (op (arg list))