From d0f0079898ef43585c54f2bfd62530ec102356a4 Mon Sep 17 00:00:00 2001 From: crc <> Date: Mon, 20 Mar 2023 14:17:14 +0000 Subject: [PATCH] add a:first and a:last, new a:map that does not use curry FossilOrigin-Name: da12a75d7886b4295d6794a3a84a3166ea017d9ab322103186303476d0810b5f --- image/retro.forth | 9 +- interface/future.retro | 1 - ngaImage | Bin 89936 -> 90280 bytes vm/nga-c/image.c | 1538 ++++++++++++++++++++-------------------- 4 files changed, 777 insertions(+), 771 deletions(-) diff --git a/image/retro.forth b/image/retro.forth index 26dd55f..17eeb72 100644 --- a/image/retro.forth +++ b/image/retro.forth @@ -1518,6 +1518,7 @@ I then define `a:append` and `a:prepend` to combine arrays. ~~~ :a:append (aa-a) dup-pair &fetch bi@ + here [ , [ &, a:for-each ] bi@ ] dip ; + :a:prepend (aa-a) swap a:append ; ~~~ @@ -1567,8 +1568,12 @@ Example: ~~~ :a:map (aq-a) - [ call , ] curry - here [ over fetch , a:for-each ] dip ; + swap [ fetch-next [ [ fetch over call ] sip + &store sip n:inc ] times + drop-pair ] sip ; + +:a:first (a-n) #0 a:fetch ; +:a:last (a-n) dup a:length n:dec a:fetch ; ~~~ You can use `a:reverse` to make a copy of an array with the diff --git a/interface/future.retro b/interface/future.retro index 66efbb6..6bbd08f 100644 --- a/interface/future.retro +++ b/interface/future.retro @@ -21,7 +21,6 @@ existing set in the future. :aa:first (a-n) #0 a:fetch ; :aa:last (a-n) dup a:length n:dec a:fetch ; - :a:dup here [ dup a:length comma &comma a:for-each ] dip ; ~~~ diff --git a/ngaImage b/ngaImage index e6cfe822aadb08fbc63313c7a9fae947fee06daa..4bc42f14183a696c1b4cb8069b8f84ac43825516 100644 GIT binary patch delta 3387 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 e8~Lozc4NBAg-