]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: add the reduce* word
authorAlexander Ilin <alex.ilin@protonmail.com>
Fri, 1 Sep 2023 21:11:41 +0000 (23:11 +0200)
committerAlexander Ilin <alex.ilin@protonmail.com>
Fri, 1 Sep 2023 21:56:00 +0000 (23:56 +0200)
This partially reverts commit 94da542acda8a6d615835875962c4fdafeddff83.

extra/sequences/extras/extras.factor

index e6f24f60427846fce81e69bae380ceb059e0888f..e2e6250c792d2a2b563ee0459830c50205e8240f 100644 (file)
@@ -4,6 +4,13 @@ math.order ranges sequences sequences.private sets shuffle
 sorting splitting vectors ;
 IN: sequences.extras
 
+! Quot must have static stack effect, unlike "reduce"
+:: reduce* ( seq identity quot: ( prev elt -- next ) -- result )
+    seq [ identity ] [
+        unclip identity swap quot call( prev elt -- next )
+        quot reduce*
+    ] if-empty ; inline recursive
+
 : find-all ( ... seq quot: ( ... elt -- ... ? ) -- ... elts )
     [ <enumerated> ] dip '[ nip @ ] assoc-filter ; inline