sequences.generalizations: add "nfind" and "nany?".
parent
19ac40f0d9
commit
8e54a4ff15
|
@ -118,6 +118,14 @@ HELP: nall?
|
||||||
{ $values { "seqs..." { $snippet "n" } " sequences on the datastack" } { "quot" { $quotation "( element... - ? )" } } { "n" integer } { "?" boolean } }
|
{ $values { "seqs..." { $snippet "n" } " sequences on the datastack" } { "quot" { $quotation "( element... - ? )" } } { "n" integer } { "?" boolean } }
|
||||||
{ $description "A generalization of " { $link all? } " that can be applied to any number of sequences." } ;
|
{ $description "A generalization of " { $link all? } " that can be applied to any number of sequences." } ;
|
||||||
|
|
||||||
|
HELP: nfind
|
||||||
|
{ $values { "seqs..." { $snippet "n" } " sequences on the datastack" } { "quot" { $quotation "( element... - ? )" } } { "n" integer } { "i" integer } { "elts..." { $snippet "n" } " elements on the datastack" } }
|
||||||
|
{ $description "A generalization of " { $link find } " that can be applied to any number of sequences." } ;
|
||||||
|
|
||||||
|
HELP: nany?
|
||||||
|
{ $values { "seqs..." { $snippet "n" } " sequences on the datastack" } { "quot" { $quotation "( element... - ? )" } } { "n" integer } { "?" boolean } }
|
||||||
|
{ $description "A generalization of " { $link any? } " that can be applied to any number of sequences." } ;
|
||||||
|
|
||||||
ARTICLE: "sequences.generalizations" "Generalized sequence words"
|
ARTICLE: "sequences.generalizations" "Generalized sequence words"
|
||||||
"The " { $vocab-link "sequences.generalizations" } " vocabulary defines generalized versions of various sequence operations."
|
"The " { $vocab-link "sequences.generalizations" } " vocabulary defines generalized versions of various sequence operations."
|
||||||
{ $subsections
|
{ $subsections
|
||||||
|
|
|
@ -140,3 +140,13 @@ D4d$
|
||||||
{ t } [
|
{ t } [
|
||||||
{ 1 3 5 } { 2 4 6 } { 4 8 12 } [ + + odd? ] 3 nall?
|
{ 1 3 5 } { 2 4 6 } { 4 8 12 } [ + + odd? ] 3 nall?
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
{ 2 4 5 } { 4 6 7 } { 6 8 9 }
|
||||||
|
[ [ odd? ] tri@ and and ] 3 nany?
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ f } [
|
||||||
|
{ 1 2 3 } { 4 5 6 } { 7 8 9 }
|
||||||
|
[ [ odd? ] tri@ and and ] 3 nany?
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -124,3 +124,23 @@ MACRO: nmap-reduce ( map-quot reduce-quot n -- quot )
|
||||||
|
|
||||||
: nall? ( seqs... quot n -- ? )
|
: nall? ( seqs... quot n -- ? )
|
||||||
(neach) all-integers? ; inline
|
(neach) all-integers? ; inline
|
||||||
|
|
||||||
|
MACRO: finish-nfind ( n -- quot )
|
||||||
|
[ 1 + ] keep dup dup dup '[
|
||||||
|
_ npick
|
||||||
|
[ [ dup ] _ ndip _ nnth-unsafe ]
|
||||||
|
[ _ ndrop _ [ f ] times ]
|
||||||
|
if
|
||||||
|
] ;
|
||||||
|
|
||||||
|
: (nfind) ( seqs... quot n quot' -- i elts... )
|
||||||
|
over
|
||||||
|
[ '[ _ _ (neach) @ ] ] dip
|
||||||
|
[ '[ _ finish-nfind ] ] keep
|
||||||
|
nbi ; inline
|
||||||
|
|
||||||
|
: nfind ( seqs... quot n -- i elts... )
|
||||||
|
[ find-integer ] (nfind) ; inline
|
||||||
|
|
||||||
|
: nany? ( seqs... quot n -- ? )
|
||||||
|
[ nfind ] [ ndrop ] bi >boolean ; inline
|
||||||
|
|
Loading…
Reference in New Issue