From: Doug Coleman Date: Mon, 25 Jul 2022 14:14:10 +0000 (-0500) Subject: assocs: assoc-stack-from X-Git-Tag: 0.99~1291 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=30aa1bf38345c6a0516f9427c717bb5a4a9d7ea0 assocs: assoc-stack-from --- diff --git a/basis/bootstrap/compiler/compiler.factor b/basis/bootstrap/compiler/compiler.factor index 69615c7e7f..4d10ced59c 100644 --- a/basis/bootstrap/compiler/compiler.factor +++ b/basis/bootstrap/compiler/compiler.factor @@ -83,7 +83,7 @@ gc "." write flush { - hashcode* = equal? assoc-stack search-assoc-stack get set + hashcode* = equal? assoc-stack assoc-stack-from get set } compile-unoptimized "." write flush diff --git a/core/assocs/assocs.factor b/core/assocs/assocs.factor index 8007cd95c6..2f661e7481 100644 --- a/core/assocs/assocs.factor +++ b/core/assocs/assocs.factor @@ -33,12 +33,12 @@ M: assoc assoc-like drop ; inline : assoc-operator ( assoc quot -- alist quot' ) [ >alist ] dip [ first2 ] prepose ; inline -: search-assoc-stack ( key i seq -- value/f ) +: assoc-stack-from ( key i seq -- value/f ) over 0 < [ 3drop f ] [ 3dup nth-unsafe at* - [ 3nip ] [ drop [ 1 - ] dip search-assoc-stack ] if + [ 3nip ] [ drop [ 1 - ] dip assoc-stack-from ] if ] if ; inline recursive : search-alist ( key alist -- pair/f i/f ) @@ -142,7 +142,7 @@ M: assoc values [ nip ] { } assoc>map ; assoc-size 0 = ; inline : assoc-stack ( key seq -- value ) - [ length 1 - ] keep search-assoc-stack ; flushable + [ length 1 - ] keep assoc-stack-from ; flushable : assoc-subset? ( assoc1 assoc2 -- ? ) [ at* [ = ] [ 2drop f ] if ] with-assoc assoc-all? ;