improvement, start fixing - should work with more than 2 params
This commit is contained in:
parent
c78fe13247
commit
8ae0ab9271
1 changed files with 10 additions and 2 deletions
12
decons.lisp
12
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))
|
||||
|
|
Loading…
Add table
Reference in a new issue