From 63bb12f4bb0f9113ee0d9892d21d910beeb82fa0 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 7 Dec 2021 00:18:36 -0800 Subject: ret, aret: take one argument, as documented. * stdlib/op.tl (ret, aret): Simplify implementation, without progn or @rest, or interpolation of multiple args. We use identity* to allow the resulting function to allow and ignore multiple arguments. * txr.1: Strangely, an an edit in commit 99131c676, on Sep 26, 2014, reverted the more accurate equivalence (ret x) <--> (op identity (progn @rest x)) back to the original documentation (ret x) <--> (op identity x) which matched an older implementation. Anyway, that's moot now; the documentation is updated to give the new equivalence via identity*. --- stdlib/op.tl | 8 ++++---- txr.1 | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stdlib/op.tl b/stdlib/op.tl index 723a9008..b348791c 100644 --- a/stdlib/op.tl +++ b/stdlib/op.tl @@ -209,11 +209,11 @@ (defmacro ido (. args) ^(ipf (do ,*args))) -(defmacro ret (. args) - ^(op identity (progn @rest ,*args))) +(defmacro ret (arg) + ^(op identity* ,arg)) -(defmacro aret (. args) - ^(ap identity (progn @rest ,*args))) +(defmacro aret (arg) + ^(ap identity* ,arg)) (defun sys:opip-expand (e clauses) (collect-each ((c clauses)) diff --git a/txr.1 b/txr.1 index f5cecdc0..68f44539 100644 --- a/txr.1 +++ b/txr.1 @@ -55343,7 +55343,7 @@ and The following equivalence holds: .verb - (ret x) <--> (op identity x)) + (ret x) <--> (op identity* x)) .brev Thus the expression @@ -55387,7 +55387,7 @@ and The following equivalence holds: .verb - (aret x) <--> (ap identity x)) + (aret x) <--> (ap identity* x)) .brev Thus the expression -- cgit v1.2.3