]> gitweb.factorcode.org Git - factor.git/commitdiff
memq? -> member-eq?, sorted-memq? -> sorted-member-eq?
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 28 Oct 2009 20:02:00 +0000 (15:02 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 28 Oct 2009 20:02:00 +0000 (15:02 -0500)
56 files changed:
basis/alien/c-types/c-types.factor
basis/binary-search/binary-search-docs.factor
basis/binary-search/binary-search.factor
basis/bootstrap/compiler/compiler.factor
basis/compiler/cfg/checker/checker.factor
basis/compiler/cfg/comparisons/comparisons.factor
basis/compiler/cfg/hats/hats.factor
basis/compiler/cfg/instructions/instructions.factor
basis/compiler/cfg/predecessors/predecessors.factor
basis/compiler/cfg/representations/preferred/preferred.factor
basis/compiler/cfg/useless-conditionals/useless-conditionals.factor
basis/compiler/cfg/utilities/utilities.factor
basis/compiler/cfg/value-numbering/expressions/expressions.factor
basis/compiler/cfg/value-numbering/rewrite/rewrite.factor
basis/compiler/tests/stack-trace.factor
basis/compiler/tree/modular-arithmetic/modular-arithmetic.factor
basis/compiler/tree/propagation/inlining/inlining.factor
basis/compiler/tree/propagation/propagation-tests.factor
basis/compiler/tree/propagation/slots/slots.factor
basis/compiler/tree/propagation/transforms/transforms.factor
basis/cpu/x86/assembler/operands/operands.factor
basis/cpu/x86/x86.factor
basis/fry/fry.factor
basis/hints/hints.factor
basis/inverse/inverse.factor
basis/io/buffers/buffers.factor
basis/io/streams/limited/limited.factor
basis/locals/rewrite/sugar/sugar.factor
basis/logging/analysis/analysis.factor
basis/math/intervals/intervals.factor
basis/math/partial-dispatch/partial-dispatch-tests.factor
basis/math/vectors/conversion/conversion.factor
basis/math/vectors/simd/simd.factor
basis/models/arrow/arrow-tests.factor
basis/prettyprint/backend/backend.factor
basis/tools/crossref/crossref.factor
basis/tools/deploy/shaker/shaker.factor
basis/ui/backend/cocoa/cocoa.factor
basis/ui/backend/windows/windows.factor
basis/ui/gadgets/labels/labels.factor
basis/ui/gadgets/worlds/worlds.factor
basis/ui/tools/listener/completion/completion.factor
basis/ui/tools/profiler/profiler.factor
core/alien/strings/strings.factor
core/classes/mixin/mixin.factor
core/classes/tuple/tuple-tests.factor
core/io/streams/c/c.factor
core/io/streams/sequence/sequence.factor
core/parser/parser-tests.factor
core/sequences/sequences-docs.factor
core/sequences/sequences-tests.factor
core/sequences/sequences.factor
core/sets/sets-docs.factor
extra/benchmark/reverse-complement/reverse-complement.factor
extra/mongodb/tuple/collection/collection.factor
misc/vim/syntax/factor.vim

index d622a42c9dc9ab56bc7eaf5c86edff8118354917..119e43773491ec49bcbfa366a55c926add07a103 100755 (executable)
@@ -501,9 +501,9 @@ M: double-2-rep rep-component-type drop double ;
 
 : c-type-interval ( c-type -- from to )
     {
-        { [ dup { float double } memq? ] [ drop -1/0. 1/0. ] }
-        { [ dup { char short int long longlong } memq? ] [ signed-interval ] }
-        { [ dup { uchar ushort uint ulong ulonglong } memq? ] [ unsigned-interval ] }
+        { [ dup { float double } member-eq? ] [ drop -1/0. 1/0. ] }
+        { [ dup { char short int long longlong } member-eq? ] [ signed-interval ] }
+        { [ dup { uchar ushort uint ulong ulonglong } member-eq? ] [ unsigned-interval ] }
     } cond ; foldable
 
 : c-type-clamp ( value c-type -- value' ) c-type-interval clamp ; inline
index 728ac41e94672018bc7800a27ccad31ccb57978c..aa015c55022f515c1d37d092c0f1bcd265068eba 100644 (file)
@@ -25,11 +25,11 @@ HELP: sorted-member?
 
 { member? sorted-member? } related-words
 
-HELP: sorted-memq?
+HELP: sorted-member-eq?
 { $values { "obj" object } { "seq" "a sorted sequence" } { "?" "a boolean" } }
 { $description "Tests if the sorted sequence contains " { $snippet "elt" } ". Equality is tested with " { $link eq? } "." } ;
 
-{ memq? sorted-memq? } related-words
+{ member-eq? sorted-member-eq? } related-words
 
 ARTICLE: "binary-search" "Binary search"
 "The " { $emphasis "binary search" } " algorithm allows elements to be located in sorted sequence in " { $snippet "O(log n)" } " time."
@@ -38,7 +38,7 @@ ARTICLE: "binary-search" "Binary search"
 { $subsections
     sorted-index
     sorted-member?
-    sorted-memq?
+    sorted-member-eq?
 }
 { $see-also "order-specifiers" "sequences-sorting" } ;
 
index aba3cfbfe5c8b9a0643ffb3fae2771befc4d678f..89a300202aacf9eab56e106452c58219143bbc63 100644 (file)
@@ -49,5 +49,5 @@ HINTS: natural-search array ;
 : sorted-member? ( obj seq -- ? )
     dupd natural-search nip = ;
 
-: sorted-memq? ( obj seq -- ? )
+: sorted-member-eq? ( obj seq -- ? )
     dupd natural-search nip eq? ;
index e9187cc3b1e6d1d4ee4a7cd6e77fdf0677b83213..4c96ed4000a638ad3bb1754eaa3f64402793941f 100755 (executable)
@@ -94,7 +94,7 @@ gc
     "." write flush
 
     {
-        memq? split harvest sift cut cut-slice start index clone
+        member-eq? split harvest sift cut cut-slice start index clone
         set-at reverse push-all class number>string string>number
         like clone-like
     } compile-unoptimized
@@ -118,4 +118,4 @@ gc
 
     " done" print flush
 
-] unless
\ No newline at end of file
+] unless
index 510d7c45cbf5f036321859632347139acef53b7e..051b0e3e1f2c3064607c9c9ed82b554e26dfe561 100644 (file)
@@ -49,7 +49,7 @@ ERROR: bad-kill-insn bb ;
 ERROR: bad-successors ;
 
 : check-successors ( bb -- )
-    dup successors>> [ predecessors>> memq? ] with all?
+    dup successors>> [ predecessors>> member-eq? ] with all?
     [ bad-successors ] unless ;
 
 : check-basic-block ( bb -- )
index 0b4a6f2f02e561c1d3d6e87efa5279964f6121f6..35f25c2d40417ee2ebff7b76b7106414f6a5c3ac 100644 (file)
@@ -90,5 +90,5 @@ SYMBOLS:
         { cc/>   { +lt+ +eq+      +unordered+ } }
         { cc/<>  {      +eq+      +unordered+ } }
         { cc/<>= {                +unordered+ } }
-    } at memq? ;
+    } at member-eq? ;
 
index 42aa5512bc1aa60321b1e0afe9813a690c7827f8..783df0678cf02cbf8f03f061a1fe7a769d1b82f7 100644 (file)
@@ -26,7 +26,7 @@ IN: compiler.cfg.hats
 
 : hat-effect ( insn -- effect )
     "insn-slots" word-prop
-    [ type>> { def temp } memq? not ] filter [ name>> ] map
+    [ type>> { def temp } member-eq? not ] filter [ name>> ] map
     { "vreg" } <effect> ;
 
 : define-hat ( insn -- )
index bffa0e59d054eda3c20d2bc0636bc1b653d5fa13..57124559889f5629061d45806a721e84d0f69271 100644 (file)
@@ -833,7 +833,7 @@ SYMBOL: vreg-insn
 [
     vreg-insn
     insn-classes get [
-        "insn-slots" word-prop [ type>> { def use temp } memq? ] any?
+        "insn-slots" word-prop [ type>> { def use temp } member-eq? ] any?
     ] filter
     define-union-class
 ] with-compilation-unit
index 8ab9f316a726c357945f2a59da4f3a679d778911..506d4aa46cdc465f90afbdce7d92ec01ab49588e 100644 (file)
@@ -12,7 +12,7 @@ IN: compiler.cfg.predecessors
 : update-phi ( bb ##phi -- )
     [
         swap predecessors>>
-        '[ drop _ memq? ] assoc-filter
+        '[ drop _ member-eq? ] assoc-filter
     ] change-inputs drop ;
 
 : update-phis ( bb -- )
@@ -30,4 +30,4 @@ PRIVATE>
 
 : needs-predecessors ( cfg -- cfg' )
     dup predecessors-valid?>>
-    [ compute-predecessors t >>predecessors-valid? ] unless ;
\ No newline at end of file
+    [ compute-predecessors t >>predecessors-valid? ] unless ;
index 4444290f057ece86c2a2c0a43ee2899c209e2b8e..1e07e56b356df45e5e3cac5692a91b2fe91db1c1 100644 (file)
@@ -26,7 +26,7 @@ GENERIC: uses-vreg-reps ( insn -- reps )
     bi define ;
 
 : reps-getter-quot ( reps -- quot )
-    dup [ rep>> { f scalar-rep } memq? not ] all? [
+    dup [ rep>> { f scalar-rep } member-eq? not ] all? [
         [ rep>> ] map [ drop ] swap suffix
     ] [
         [ rep>> rep-getter-quot ] map dup length {
index cd4978c585ffe3bb194a7e2118e2f93c6c60afae..a2885ae26e775ed6b1a6e3a426e5aa1672397cfe 100644 (file)
@@ -13,7 +13,7 @@ IN: compiler.cfg.useless-conditionals
                 ##compare-imm-branch
                 ##compare-float-ordered-branch
                 ##compare-float-unordered-branch
-            } memq?
+            } member-eq?
         ]
         [ successors>> first2 [ skip-empty-blocks ] bi@ eq? ]
     } 1&& ;
index be8c9ad0adca41edebcf17798db83b3f4cf5449b..3710f4974bf81fd2ea428232eed1a48193873c38 100644 (file)
@@ -40,7 +40,7 @@ SYMBOL: visited
 :: insert-basic-block ( froms to bb -- )
     bb froms V{ } like >>predecessors drop
     bb to 1vector >>successors drop
-    to predecessors>> [ dup froms memq? [ drop bb ] when ] map! drop
+    to predecessors>> [ dup froms member-eq? [ drop bb ] when ] map! drop
     froms [ successors>> [ dup to eq? [ drop bb ] when ] map! drop ] each ;
 
 : add-instructions ( bb quot -- )
index 0ac973a20650a4b46163eadeb8dbce323039de2c..6534aa74ab07b90f81cafde06e19c216f93d35e2 100644 (file)
@@ -42,7 +42,7 @@ M: ##load-constant >expr obj>> <constant> ;
 <<
 
 : input-values ( slot-specs -- slot-specs' )
-    [ type>> { use literal constant } memq? ] filter ;
+    [ type>> { use literal constant } member-eq? ] filter ;
 
 : expr-class ( insn -- expr )
     name>> "##" ?head drop "-expr" append create-class-in ;
index 28c6741bc194d77b8e8b80365359315c03c51b7c..5d4ff5efb9c0297aac72db09f35cfe3d5821c129 100755 (executable)
@@ -111,7 +111,7 @@ M: ##compare-imm rewrite-tagged-comparison
     {
         [ src1>> vreg>expr general-compare-expr? ]
         [ src2>> \ f tag-number = ]
-        [ cc>> { cc= cc/= } memq? ]
+        [ cc>> { cc= cc/= } member-eq? ]
     } 1&& ; inline
 
 : rewrite-redundant-comparison ( insn -- insn' )
@@ -174,7 +174,7 @@ M: ##compare-imm-branch rewrite
     [ src1>> ] [ src2>> ] bi [ vreg>vn ] bi@ = ; inline
 
 : (rewrite-self-compare) ( insn -- ? )
-    cc>> { cc= cc<= cc>= } memq? ;
+    cc>> { cc= cc<= cc>= } member-eq? ;
 
 : rewrite-self-compare-branch ( insn -- insn' )
     (rewrite-self-compare) fold-branch ;
@@ -279,7 +279,7 @@ M: ##not rewrite
         ##sub-imm
         ##mul
         ##mul-imm
-    } memq? ;
+    } member-eq? ;
 
 : immediate? ( value op -- ? )
     arithmetic-op? [ immediate-arithmetic? ] [ immediate-bitwise? ] if ;
index 20a5cc867c8bbde4f77a13d6ad28c3b05e6ef73b..40aa1bb336ad3d462c451b2013fe8b458aea68fd 100755 (executable)
@@ -19,7 +19,7 @@ IN: compiler.tests.stack-trace
 
 : bleh ( seq -- seq' ) [ 3 + ] map [ 0 > ] filter ;
 
-: stack-trace-any? ( word -- ? ) symbolic-stack-trace memq? ;
+: stack-trace-any? ( word -- ? ) symbolic-stack-trace member-eq? ;
 
 [ t ] [
     [ { 1 "hi" } bleh ] ignore-errors \ + stack-trace-any?
index 8ca80ccbae1ed74a44a607181dcce98a9ff7417a..ece2ed80f3d4af7c1622f04d0803e28d2e243482 100644 (file)
@@ -75,7 +75,7 @@ M: #push compute-modular-candidates*
     0 cell-bits tag-bits get - 1 - [a,b] interval-subset? ;
 
 : modular-word? ( #call -- ? )
-    dup word>> { shift fixnum-shift bignum-shift } memq?
+    dup word>> { shift fixnum-shift bignum-shift } member-eq?
     [ node-input-infos second interval>> small-shift? ]
     [ word>> "modular-arithmetic" word-prop ]
     if ;
@@ -178,10 +178,10 @@ MEMO: fixnum-coercion ( flags -- nodes )
     ] when ;
 
 : like->fixnum? ( #call -- ? )
-    word>> { >fixnum bignum>fixnum float>fixnum } memq? ;
+    word>> { >fixnum bignum>fixnum float>fixnum } member-eq? ;
 
 : like->integer? ( #call -- ? )
-    word>> { >integer >bignum fixnum>bignum } memq? ;
+    word>> { >integer >bignum fixnum>bignum } member-eq? ;
 
 M: #call optimize-modular-arithmetic*
     {
index 367427c7168aa0659c07366630e79062af3e8de0..634fade609b93643348aab904d475318f0997fcc 100755 (executable)
@@ -90,7 +90,7 @@ M: callable splicing-nodes splicing-body ;
 ! Method body inlining
 SYMBOL: history
 
-: already-inlined? ( obj -- ? ) history get memq? ;
+: already-inlined? ( obj -- ? ) history get member-eq? ;
 
 : add-to-history ( obj -- ) history [ swap suffix ] change ;
 
@@ -104,7 +104,7 @@ SYMBOL: history
     ] if ;
 
 : always-inline-word? ( word -- ? )
-    { curry compose } memq? ;
+    { curry compose } member-eq? ;
 
 : never-inline-word? ( word -- ? )
     { [ deferred? ] [ "default" word-prop ] [ \ call eq? ] } 1|| ;
index 5d12c14f5ff2ad7fc632ce9892d1518f68066949..0f04a5e3d5866761bceb5eed72af544564ef413c 100644 (file)
@@ -867,8 +867,8 @@ SYMBOL: not-an-assoc
 [ t ] [ [ { 1 2 3 } member? ] { member? } inlined? ] unit-test
 [ f ] [ [ { 1 2 3 } swap member? ] { member? } inlined? ] unit-test
 
-[ t ] [ [ { 1 2 3 } memq? ] { memq? } inlined? ] unit-test
-[ f ] [ [ { 1 2 3 } swap memq? ] { memq? } inlined? ] unit-test
+[ t ] [ [ { 1 2 3 } member-eq? ] { member-eq? } inlined? ] unit-test
+[ f ] [ [ { 1 2 3 } swap member-eq? ] { member-eq? } inlined? ] unit-test
 
 [ t ] [ [ V{ } clone ] { clone (clone) } inlined? ] unit-test
 [ f ] [ [ { } clone ] { clone (clone) } inlined? ] unit-test
index 4996729ded72a235de05968f5931dd8f8fbf8674..11a4cdc4c6be9b41ec56b0e9a3be106284fde11d 100644 (file)
@@ -11,7 +11,7 @@ IN: compiler.tree.propagation.slots
 UNION: fixed-length-sequence array byte-array string ;
 
 : sequence-constructor? ( word -- ? )
-    { <array> <byte-array> (byte-array) <string> } memq? ;
+    { <array> <byte-array> (byte-array) <string> } member-eq? ;
 
 : constructor-output-class ( word -- class )
     {
index d1f53864505bb88a431e9889a7af9b8e05a6a2c9..1f40bf00a2f07c77016c8d0a98529ee927df238d 100644 (file)
@@ -213,12 +213,12 @@ ERROR: bad-partial-eval quot word ;
     ] [ drop f ] if
 ] 1 define-partial-eval
 
-: memq-quot ( seq -- newquot )
+: member-eq-quot ( seq -- newquot )
     [ [ dupd eq? ] curry [ drop t ] ] { } map>assoc
     [ drop f ] suffix [ cond ] curry ;
 
-\ memq? [
-    dup sequence? [ memq-quot ] [ drop f ] if
+\ member-eq? [
+    dup sequence? [ member-eq-quot ] [ drop f ] if
 ] 1 define-partial-eval
 
 ! Membership testing
index df49ae0a15f8c085cce8881b638158fb0db8c009..bd9a3f6cddff869c2b899b93f8ceca6d2a302636 100644 (file)
@@ -65,7 +65,7 @@ M: indirect extended? base>> extended? ;
 ERROR: bad-index indirect ;
 
 : check-ESP ( indirect -- indirect )
-    dup index>> { ESP RSP } memq? [ bad-index ] when ;
+    dup index>> { ESP RSP } member-eq? [ bad-index ] when ;
 
 : canonicalize ( indirect -- indirect )
     #! Modify the indirect to work around certain addressing mode
@@ -103,7 +103,7 @@ TUPLE: byte value ;
 C: <byte> byte
 
 : extended-8-bit-register? ( register -- ? )
-    { SPL BPL SIL DIL } memq? ;
+    { SPL BPL SIL DIL } member-eq? ;
 
 : n-bit-version-of ( register n -- register' )
     ! Certain 8-bit registers don't exist in 32-bit mode...
@@ -115,4 +115,4 @@ C: <byte> byte
 : 16-bit-version-of ( register -- register' ) 16 n-bit-version-of ;
 : 32-bit-version-of ( register -- register' ) 32 n-bit-version-of ;
 : 64-bit-version-of ( register -- register' ) 64 n-bit-version-of ;
-: native-version-of ( register -- register' ) cell-bits n-bit-version-of ;
\ No newline at end of file
+: native-version-of ( register -- register' ) cell-bits n-bit-version-of ;
index d19a9b0c8c2400c549e89fd0d8d339cd4ca951dd..07b21c96124a75dd35be5f7eb7596326a155908b 100644 (file)
@@ -254,7 +254,7 @@ CONSTANT: have-byte-regs { EAX ECX EDX EBX }
 
 M: x86.32 has-small-reg?
     {
-        { 8 [ have-byte-regs memq? ] }
+        { 8 [ have-byte-regs member-eq? ] }
         { 16 [ drop t ] }
         { 32 [ drop t ] }
     } case ;
@@ -264,7 +264,7 @@ M: x86.64 has-small-reg? 2drop t ;
 : small-reg-that-isn't ( exclude -- reg' )
     [ have-byte-regs ] dip
     [ native-version-of ] map
-    '[ _ memq? not ] find nip ;
+    '[ _ member-eq? not ] find nip ;
 
 : with-save/restore ( reg quot -- )
     [ drop PUSH ] [ call ] [ drop POP ] 2tri ; inline
@@ -356,7 +356,7 @@ M: x86 %set-alien-float [ [+] ] dip MOVSS ;
 M: x86 %set-alien-double [ [+] ] dip MOVSD ;
 M: x86 %set-alien-vector [ [+] ] 2dip %copy ;
 
-: shift-count? ( reg -- ? ) { ECX RCX } memq? ;
+: shift-count? ( reg -- ? ) { ECX RCX } member-eq? ;
 
 :: emit-shift ( dst src quot -- )
     src shift-count? [
@@ -893,7 +893,7 @@ M: x86 %compare-vector ( dst src1 src2 rep cc -- )
 
 M: x86 %compare-vector-reps
     {
-        { [ dup { cc= cc/= cc/<>= cc<>= } memq? ] [ drop %compare-vector-eq-reps ] }
+        { [ dup { cc= cc/= cc/<>= cc<>= } member-eq? ] [ drop %compare-vector-eq-reps ] }
         [ drop %compare-vector-ord-reps ]
     } cond ;
 
index fd029cc329f8c61551ca0149e7ed1b1787398c99..046da86b7bf162fb73d4324a1ffc0c348d7ca8a5 100644 (file)
@@ -28,7 +28,7 @@ M: >r/r>-in-fry-error summary
     dup { load-local load-locals get-local drop-locals } intersect
     [ >r/r>-in-fry-error ] unless-empty ;
 
-PREDICATE: fry-specifier < word { _ @ } memq? ;
+PREDICATE: fry-specifier < word { _ @ } member-eq? ;
 
 GENERIC: count-inputs ( quot -- n )
 
index 2c250aa66dad6152238018d6056dc93e8194d54f..d7c745500bef196788a880917099e4dd046c6d15 100644 (file)
@@ -119,7 +119,7 @@ SYNTAX: HINTS:
 
 \ split, { string string } "specializer" set-word-prop
 
-\ memq? { array } "specializer" set-word-prop
+\ member-eq? { array } "specializer" set-word-prop
 
 \ member? { array } "specializer" set-word-prop
 
index 6b1e839ca6d47173c0b15907c9b314e369683983..1e941afed05914db2be6554876ad32f8c1f8cd82 100755 (executable)
@@ -97,7 +97,7 @@ SYMBOL: visited
         [
             dup flattenable? [
                 def>>
-                [ visited get memq? [ no-recursive-inverse ] when ]
+                [ visited get member-eq? [ no-recursive-inverse ] when ]
                 [ flatten ]
                 bi
             ] [ 1quotation ] if
@@ -149,7 +149,7 @@ MACRO: undo ( quot -- ) [undo] ;
 \ tri* 3 [ [ [undo] ] tri@ '[ _ _ _ tri* ] ] define-pop-inverse
 
 \ not define-involution
-\ >boolean [ dup { t f } memq? assure ] define-inverse
+\ >boolean [ dup { t f } member-eq? assure ] define-inverse
 
 \ tuple>array \ >tuple define-dual
 \ reverse define-involution
index aa9cedf3404e3fe147e14efa315f0c8529534784..91524dd6e1140584bbb2b3f76ec0c4f5a13282e9 100644 (file)
@@ -73,7 +73,7 @@ HINTS: >buffer byte-array buffer ;
     bi ; inline
 
 : search-buffer-until ( pos fill ptr separators -- n )
-    [ [ swap alien-unsigned-1 ] dip memq? ] 2curry find-from drop ; inline
+    [ [ swap alien-unsigned-1 ] dip member-eq? ] 2curry find-from drop ; inline
 
 : finish-buffer-until ( buffer n -- byte-array separator )
     [
index 403643ed73aadec4464e9b75ed13a104f1b5bd25..f5aab9c97619a5e66ea5cabed0e2735c190b36c7 100755 (executable)
@@ -123,7 +123,7 @@ M: limited-stream stream-read-partial
 <PRIVATE
 
 : (read-until) ( stream seps buf -- stream seps buf sep/f )
-    3dup [ [ stream-read1 dup ] dip memq? ] dip
+    3dup [ [ stream-read1 dup ] dip member-eq? ] dip
     swap [ drop ] [ push (read-until) ] if ;
 
 :: limited-stream-seek ( n seek-type stream -- )
index 87568d596aba4bdc104a26d69f42023214b8117f..c1bde9312ec1d032d78515fc8000f0bdd9255354 100755 (executable)
@@ -110,7 +110,7 @@ M: wrapper rewrite-sugar*
     rewrite-wrapper ;
 
 M: word rewrite-sugar*
-    dup { load-locals get-local drop-locals } memq?
+    dup { load-locals get-local drop-locals } member-eq?
     [ >r/r>-in-lambda-error ] [ call-next-method ] if ;
 
 M: object rewrite-sugar* , ;
index 0ba98996b3b0099bfdec6541d8f60b9e95947ff6..eb8a2eaf76b77c63a5113a7754a8a09478fdb07f 100644 (file)
@@ -12,7 +12,7 @@ SYMBOL: word-histogram
 SYMBOL: message-histogram\r
 \r
 : analyze-entry ( entry -- )\r
-    dup level>> { ERROR CRITICAL } memq? [ dup errors get push ] when\r
+    dup level>> { ERROR CRITICAL } member-eq? [ dup errors get push ] when\r
     dup word-name>> word-histogram get inc-at\r
     dup word-name>> word-names get member? [\r
         dup [ level>> ] [ word-name>> ] [ message>> ] tri 3array\r
index 05f9906bb9d6602d2aa6e1862ff9d2315ae54e8c..ec742cb1ce82015de7a62497aff6f814f368f128 100755 (executable)
@@ -192,7 +192,7 @@ MEMO: array-capacity-interval ( -- interval )
 : interval-sq ( i1 -- i2 ) dup interval* ;
 
 : special-interval? ( interval -- ? )
-    { empty-interval full-interval } memq? ;
+    { empty-interval full-interval } member-eq? ;
 
 : interval-singleton? ( int -- ? )
     dup special-interval? [
index 29979b62d357ceedb089676a4f216ea3282bdeb1..8bca1459c053556f5fcb9474fb1918ad9f21ec64 100644 (file)
@@ -10,9 +10,9 @@ tools.test math kernel sequences ;
 [ f ] [ \ + object number math-both-known? ] unit-test
 [ f ] [ \ number= fixnum object math-both-known? ] unit-test
 [ t ] [ \ number= integer fixnum math-both-known? ] unit-test
-[ f ] [ \ >fixnum \ shift derived-ops memq? ] unit-test
-[ f ] [ \ >integer \ /i derived-ops memq? ] unit-test
-[ t ] [ \ fixnum-shift \ shift derived-ops memq? ] unit-test
+[ f ] [ \ >fixnum \ shift derived-ops member-eq? ] unit-test
+[ f ] [ \ >integer \ /i derived-ops member-eq? ] unit-test
+[ t ] [ \ fixnum-shift \ shift derived-ops member-eq? ] unit-test
 
 [ { integer fixnum } ] [ \ +-integer-fixnum integer-op-input-classes ] unit-test
 [ { fixnum fixnum } ] [ \ fixnum+ integer-op-input-classes ] unit-test
@@ -30,4 +30,4 @@ tools.test math kernel sequences ;
 [ 3 ] [ 1 2 +-integer-integer ] unit-test
 [ 3 ] [ 1 >bignum 2 +-integer-integer ] unit-test
 [ 3 ] [ 1 2 >bignum +-integer-integer ] unit-test
-[ 3 ] [ 1 >bignum 2 >bignum +-integer-integer ] unit-test
\ No newline at end of file
+[ 3 ] [ 1 >bignum 2 >bignum +-integer-integer ] unit-test
index f70dfc9b27667b3d92a17a2142b135213563ac22..a4f90ce938dbb93567254755a87c31ed6a15c12c 100644 (file)
@@ -11,9 +11,9 @@ ERROR: bad-vconvert-input value expected-type ;
 <PRIVATE
 
 : float-type? ( c-type -- ? )
-    { float double } memq? ;
+    { float double } member-eq? ;
 : unsigned-type? ( c-type -- ? )
-    { uchar ushort uint ulonglong } memq? ;
+    { uchar ushort uint ulonglong } member-eq? ;
 
 : check-vconvert-type ( value expected-type -- value )
     2dup instance? [ drop ] [ bad-vconvert-input ] if ; inline
index ffa6b5ba1876bad1d4fce40e62d88f059db80c4e..388fed5f31cee345692a202f09c12e698c49e01c 100644 (file)
@@ -15,7 +15,7 @@ ERROR: bad-base-type type ;
     name>> "math.vectors.simd.instances." prepend ;
 
 : parse-base-type ( c-type -- c-type )
-    dup { c:char c:uchar c:short c:ushort c:int c:uint c:longlong c:ulonglong c:float c:double } memq?
+    dup { c:char c:uchar c:short c:ushort c:int c:uint c:longlong c:ulonglong c:float c:double } member-eq?
     [ bad-base-type ] unless ;
 
 : forget-instances ( -- )
index d7900f1dbd5e32ab5b534b35ad9dfd8e73eda488..6bd6395ac058009605438389130cae76b180718f 100644 (file)
@@ -6,12 +6,12 @@ IN: models.arrow.tests
 "x" get [ 2 * ] <arrow> dup "z" set\r
 [ 1 + ] <arrow> "y" set\r
 [ ] [ "y" get activate-model ] unit-test\r
-[ t ] [ "z" get "x" get connections>> memq? ] unit-test\r
+[ t ] [ "z" get "x" get connections>> member-eq? ] unit-test\r
 [ 7 ] [ "y" get value>> ] unit-test\r
 [ ] [ 4 "x" get set-model ] unit-test\r
 [ 9 ] [ "y" get value>> ] unit-test\r
 [ ] [ "y" get deactivate-model ] unit-test\r
-[ f ] [ "z" get "x" get connections>> memq? ] unit-test\r
+[ f ] [ "z" get "x" get connections>> member-eq? ] unit-test\r
 \r
 3 <model> "x" set\r
 "x" get [ sq ] <arrow> "y" set\r
index f919573ea95aed3e6237769a5f19fe02594b9302..0ba1d38ae62054b0f3522f1eab5030a5595daa8c 100644 (file)
@@ -119,7 +119,7 @@ M: pathname pprint*
         "~" over class name>> "~" 3append
         swap present-text
     ] [
-        over recursion-check get memq? [
+        over recursion-check get member-eq? [
             drop "~circularity~" swap present-text
         ] [
             over recursion-check get push
index beaf1c0673bc89ba30f0b8d6249a028bde2741be..90fe7e8e9daee1a6715b8b55c2a56f066e1b8804 100644 (file)
@@ -24,13 +24,13 @@ M: word quot-uses over crossref? [ conjoin ] [ 2drop ] if ;
     [ quot-uses ] curry each ;
 
 : seq-uses ( seq assoc -- )
-    over visited get memq? [ 2drop ] [
+    over visited get member-eq? [ 2drop ] [
         over visited get push
         (seq-uses)
     ] if ;
 
 : assoc-uses ( assoc' assoc -- )
-    over visited get memq? [ 2drop ] [
+    over visited get member-eq? [ 2drop ] [
         over visited get push
         [ >alist ] dip (seq-uses)
     ] if ;
@@ -137,4 +137,4 @@ M: invalidate-crossref definitions-changed 2drop crossref global delete-at ;
 
 [ invalidate-crossref add-definition-observer ] "tools.crossref" add-init-hook
 
-PRIVATE>
\ No newline at end of file
+PRIVATE>
index 48e33be43e936e78a50cf0e0b0952722d7f5070a..e42f478de65dcf2fbc5050f1020d28fe26ef12f7 100755 (executable)
@@ -477,7 +477,7 @@ SYMBOL: deploy-vocab
     next-method ;
 
 : calls-next-method? ( method -- ? )
-    def>> flatten \ (call-next-method) swap memq? ;
+    def>> flatten \ (call-next-method) swap member-eq? ;
 
 : compute-next-methods ( -- )
     [ standard-generic? ] instances [
index a262b549f2a24dd54a895711140fa19a0719ce88..9759dbfcc55f36e868851e12687c3c8e80f3facc 100755 (executable)
@@ -130,7 +130,7 @@ CONSTANT: window-control>styleMask
 M:: cocoa-ui-backend (open-window) ( world -- )
     world [ [ dim>> ] dip <FactorView> ]
     with-world-pixel-format :> view
-    world window-controls>> textured-background swap memq?
+    world window-controls>> textured-background swap member-eq?
     [ view make-context-transparent ] when
     view world [ world>NSRect ] [ world>styleMask ] bi <ViewWindow> :> window
     view -> release
index b099917e7ce7836ec484038d79f16b5a2cb1da1a..a6d73ca80fa57dbe3c30a911d20b71b8bb9b48d1 100755 (executable)
@@ -537,7 +537,7 @@ SYMBOL: nc-buttons
     COLOR_BTNFACE GetSysColor RGB>color ;
 
 : ?make-glass ( world hwnd -- )
-    over window-controls>> textured-background swap memq? [
+    over window-controls>> textured-background swap member-eq? [
         composition-enabled? [
             full-window-margins DwmExtendFrameIntoClientArea drop
             T{ rgba f 0.0 0.0 0.0 0.0 }
index 83d15911e7b1a9832fbecbd4490e3d84da43c989..c655e289b0f6063a21f4ac6486d393f3f714d3ea 100644 (file)
@@ -22,7 +22,7 @@ PREDICATE: string-array < array [ string? ] all? ;
 PRIVATE>
 
 : ?string-lines ( string -- string/array )
-    CHAR: \n over memq? [ string-lines ] when ;
+    CHAR: \n over member-eq? [ string-lines ] when ;
 
 ERROR: not-a-string object ;
 
index 61f84870e5213b5d4a39ebf01016719a2f51753c..8f38cee988c308db60eb461bf28a8d6f957b3fe0 100755 (executable)
@@ -120,7 +120,7 @@ M: world request-focus-on ( child gadget -- )
         V{ } clone >>window-resources ;
 
 : initial-background-color ( attributes -- color )
-    window-controls>> textured-background swap memq?
+    window-controls>> textured-background swap member-eq?
     [ T{ rgba f 0.0 0.0 0.0 0.0 } ]
     [ T{ rgba f 1.0 1.0 1.0 1.0 } ] if ;
 
@@ -151,7 +151,7 @@ M: world focusable-child* children>> [ t ] [ first ] if-empty ;
 M: world children-on nip children>> ;
 
 M: world remove-gadget
-    2dup layers>> memq?
+    2dup layers>> member-eq?
     [ layers>> remove-eq! drop ] [ call-next-method ] if ;
 
 SYMBOL: flush-layout-cache-hook
index 5dd0581cf24c7744da05024ef31683ac6d166bb4..b069de18872356e58872ff56bdbd4e5f9c2702a6 100644 (file)
@@ -64,7 +64,7 @@ M: definition-completion row-columns
 M: word-completion row-color
     [ vocabulary>> ] [ manifest>> ] bi* {
         { [ dup not ] [ COLOR: black ] }
-        { [ 2dup search-vocabs>> memq? ] [ COLOR: black ] }
+        { [ 2dup search-vocabs>> member-eq? ] [ COLOR: black ] }
         { [ over ".private" tail? ] [ COLOR: dark-red ] }
         [ COLOR: dark-gray ]
     } cond 2nip ;
@@ -181,4 +181,4 @@ completion-popup H{
 M: completion-popup handle-gesture ( gesture completion -- ? )
     2dup completion-gesture dup [
         [ nip hide-glass ] [ invoke-command ] 2bi* f
-    ] [ 2drop call-next-method ] if ;
\ No newline at end of file
+    ] [ 2drop call-next-method ] if ;
index bb23bc0692b3868a8ee96c97f5f3d9d5155b2633..3de7c9cc702f6d7bf0b730589e8fbff0432473f3 100644 (file)
@@ -107,7 +107,7 @@ M: method-renderer column-titles drop { "" "Method" "Count" } ;
 : method-matches? ( method generic class -- ? )
     [ first ] 2dip
     {
-        [ drop dup [ subwords memq? ] [ 2drop t ] if ]
+        [ drop dup [ subwords member-eq? ] [ 2drop t ] if ]
         [ nip dup [ swap "method-class" word-prop = ] [ 2drop t ] if ]
     } 3&& ;
 
index e96b13478e85f20b714b62865799141fdc36bcd3..83758cd8666ab53a047bc5f9784203feb0068e7f 100644 (file)
@@ -21,7 +21,7 @@ M: f alien>string
 ERROR: invalid-c-string string ;
 
 : check-string ( string -- )
-    0 over memq? [ invalid-c-string ] [ drop ] if ;
+    0 over member-eq? [ invalid-c-string ] [ drop ] if ;
 
 GENERIC# string>alien 1 ( string encoding -- byte-array )
 
index 6cf95716beb711ecde1e7feacb5444c9d2ca212c..6514f36074ca0bd0acd3ed908a9a683d36d8b854 100644 (file)
@@ -34,7 +34,7 @@ TUPLE: check-mixin-class class ;
     ] unless ;
 
 : if-mixin-member? ( class mixin true false -- )
-    [ check-mixin-class 2dup members memq? ] 2dip if ; inline
+    [ check-mixin-class 2dup members member-eq? ] 2dip if ; inline
 
 : change-mixin-class ( class mixin quot -- )
     [ [ members swap bootstrap-word ] dip call ] [ drop ] 2bi
index 5ab83aa015f9b1012fb5969ec27182b8003d7435..355514754295321047b8dfd8655c5e04b8949f61 100644 (file)
@@ -110,7 +110,7 @@ TUPLE: yo-momma ;
     [ t ] [ \ yo-momma class? ] unit-test
     [ ] [ \ yo-momma forget ] unit-test
     [ ] [ \ <yo-momma> forget ] unit-test
-    [ f ] [ \ yo-momma update-map get values memq? ] unit-test
+    [ f ] [ \ yo-momma update-map get values member-eq? ] unit-test
 ] with-compilation-unit
 
 TUPLE: loc-recording ;
index 6ff1a4b35c9be1e037f37c83f72aab8e15a9db69..1da30fe922c3e12e49004a6660090b5f65194c13 100755 (executable)
@@ -49,7 +49,7 @@ M: c-reader stream-read1 dup check-disposed handle>> fgetc ;
 
 : read-until-loop ( stream delim -- ch )
     over stream-read1 dup [
-        dup pick memq? [ 2nip ] [ , read-until-loop ] if
+        dup pick member-eq? [ 2nip ] [ , read-until-loop ] if
     ] [
         2nip
     ] if ;
index 036bab22135bd8c124b1b39f6584cc108a51c438..5ecbc321ce26715cbcdc97e2aa46318953165927 100644 (file)
@@ -32,7 +32,7 @@ SLOT: i
 
 : find-sep ( seps stream -- sep/f n )
     swap [ >sequence-stream< swap tail-slice ] dip
-    [ memq? ] curry find swap ; inline
+    [ member-eq? ] curry find swap ; inline
 
 : sequence-read-until ( separators stream -- seq sep/f )
     [ find-sep ] keep
index 791fe1fa36e056cf9bf82e1aa43bbc40af653eec..f30eb686840470841b32f7c3fafe09003af957b2 100644 (file)
@@ -141,15 +141,15 @@ IN: parser.tests
     ] unit-test
     
     [ t ] [
-        array "smudge-me" "parser.tests" lookup order memq?
+        array "smudge-me" "parser.tests" lookup order member-eq?
     ] unit-test
     
     [ t ] [
-        integer "smudge-me" "parser.tests" lookup order memq?
+        integer "smudge-me" "parser.tests" lookup order member-eq?
     ] unit-test
     
     [ f ] [
-        string "smudge-me" "parser.tests" lookup order memq?
+        string "smudge-me" "parser.tests" lookup order member-eq?
     ] unit-test
 
     [ ] [
index 99ad019063725bd1e47268b0195d0ba5297f34a3..cb3968ab0f3ca3f2dc901a7089116cbe4065ea37 100755 (executable)
@@ -461,7 +461,7 @@ HELP: member?
 { $description "Tests if the sequence contains an element equal to the object." }
 { $notes "This word uses equality comparison (" { $link = } ")." } ;
 
-HELP: memq?
+HELP: member-eq?
 { $values { "elt" object } { "seq" sequence } { "?" "a boolean" } }
 { $description "Tests if the sequence contains the object." }
 { $notes "This word uses identity comparison (" { $link eq? } ")." } ;
@@ -1566,7 +1566,7 @@ ARTICLE: "sequences-tests" "Testing sequences"
 "Testing indices:"
 { $subsections bounds-check? }
 "Testing if a sequence contains an object:"
-{ $subsections member? memq? }
+{ $subsections member? member-eq? }
 "Testing if a sequence contains a subsequence:"
 { $subsections head? tail? subseq? } ;
 
index d25c62c561d2aac9fc7c339b38c0cfd960e8c825..58e61cc94c0a6885710740f9b5953d310edec20f 100644 (file)
@@ -42,7 +42,7 @@ IN: sequences.tests
 [ t ] [ 2 [ 1 2 ] member? ] unit-test
 
 [ t ]
-[ [ "hello" "world" ] [ second ] keep memq? ] unit-test
+[ [ "hello" "world" ] [ second ] keep member-eq? ] unit-test
 
 [ 4 ] [ CHAR: x "tuvwxyz" >vector index ] unit-test 
 
index ee78daed17d8c19f89cf8b91d985eec6e852e348..8e15f73ed70b4d1cfad136b432594ae2fa97f5e3 100755 (executable)
@@ -567,7 +567,7 @@ PRIVATE>
 : member? ( elt seq -- ? )
     [ = ] with any? ;
 
-: memq? ( elt seq -- ? )
+: member-eq? ( elt seq -- ? )
     [ eq? ] with any? ;
 
 : remove ( elt seq -- newseq )
index 26bfc140fbe2e29332bbd274892313a6ca2b305e..999e963f36d9fdb2eacf40ca4682f13c56066f25 100755 (executable)
@@ -32,7 +32,7 @@ $nl
     conjoin
     conjoin-at
 }
-{ $see-also member? memq? any? all? "assocs-sets" } ;
+{ $see-also member? member-eq? any? all? "assocs-sets" } ;
 
 ABOUT: "sets"
 
index 39b7433a75e11c02d29caf67a7745c392ce89011..95035e6cd8dff2babc1a89aaf2310e7dde5511da 100755 (executable)
@@ -15,7 +15,7 @@ TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
     translate-seq 60 <groups> [ print ] each ;
 
 : do-line ( seq line -- seq )
-    dup first ">;" memq?
+    dup first ">;" member-eq?
     [ over show-seq print dup delete-all ] [ over push ] if ;
 
 HINTS: do-line vector string ;
index 6c2b89a57167424429533c2a3885e60cb3ad33fc..85036c8d86ae4900214b50b4855ed2e676cbe1bf 100644 (file)
@@ -152,7 +152,7 @@ M: mdb-collection mdb-index-map
 
 : slot-option? ( tuple slot option -- ? )
     [ swap mdb-slot-map at ] dip
-    '[ _ swap memq? ] [ f ] if* ;
+    '[ _ swap member-eq? ] [ f ] if* ;
   
 PRIVATE>
 
index ed8fd0d9e6c9b9b0a7a3174ce1760b02feaabc06..13b999250d6ce5aa8eda22e070b23e68a3eeeb00 100644 (file)
@@ -53,7 +53,7 @@ syn keyword factorKeyword or tuck 2bi 2tri while wrapper nip 4dip wrapper? bi* c
 syn keyword factorKeyword ?at assoc? assoc-clone-like assoc= delete-at* assoc-partition extract-keys new-assoc value? assoc-size map>assoc push-at assoc-like key? assoc-intersect assoc-refine update assoc-union assoc-combine at* assoc-empty? at+ set-at assoc-all? assoc-subset? assoc-hashcode change-at assoc-each assoc-diff zip values value-at rename-at inc-at enum? at cache assoc>map <enum> assoc assoc-map enum value-at* assoc-map-as >alist assoc-filter-as clear-assoc assoc-stack maybe-set-at substitute assoc-filter 2cache delete-at assoc-find keys assoc-any? unzip
 syn keyword factorKeyword case execute-effect no-cond no-case? 3cleave>quot 2cleave cond>quot wrong-values? no-cond? cleave>quot no-case case>quot 3cleave wrong-values to-fixed-point alist>quot case-find cond cleave call-effect 2cleave>quot recursive-hashcode linear-case-quot spread spread>quot
 syn keyword factorKeyword byte-array>bignum sgn >bignum next-float number= each-integer next-power-of-2 ?1+ fp-special? imaginary-part mod recip float>bits rational >float number? 2^ bignum? integer fixnum? neg fixnum sq bignum fp-snan? fp-infinity? denominator (all-integers?) times find-last-integer (each-integer) bit? * + fp-bitwise= - fp-qnan? / power-of-2? >= bitand find-integer complex <fp-nan> < log2 > integer? real number bits>double double>bits bitor 2/ zero? rem fp-nan-payload all-integers? (find-integer) real-part prev-float align bits>float float? shift float fp-nan? abs bitxor ratio? even? <= /mod odd? >integer ratio rational? bitnot real? >fixnum complex? /i numerator /f
-syn keyword factorKeyword append assert-sequence= find-last-from trim-head-slice clone-like 3sequence assert-sequence? map-as filter! last-index-from reversed index-from cut* pad-tail (indices) concat-as remove-eq but-last snip trim-tail nths nth 2pusher sequence slice? <slice> partition remove-nth tail-slice empty? tail* if-empty find-from virtual-sequence? member? set-length remove-eq! drop-prefix unclip iota unclip-last-slice bounds-error? sequence-hashcode-step map start midpoint@ rest-slice prepend fourth sift delete sigma new-sequence follow like remove-nth! first4 1sequence reverse slice unless-empty padding virtual@ repetition? set-last index 4sequence max-length set-second immutable-sequence first2 first3 replicate-as reduce-index unclip-slice supremum insert-nth trim-tail-slice tail 3append short count suffix concat flip filter sum immutable? 2sequence map-integers delete-all start* indices snip-slice check-slice sequence? head map-find reduce append-as reverse! sequence= halves collapse-slice interleave 2map binary-reduce virtual-seq slice-error? product bounds-check? bounds-check harvest immutable find produce remove pad-head last replicate set-fourth shorten reversed? map-find-last 3map-as 2unclip-slice shorter? 3map find-last head-slice pop* 2map-as tail-slice* but-last-slice 2map-reduce iota? accumulate each pusher cut-slice new-resizable each-index head-slice* 2reverse-each sequence-hashcode memq? pop set-nth ?nth <flat-slice> second map! join when-empty accumulator immutable-sequence? <reversed> all? 3append-as virtual-sequence subseq? push-either new-like length last-index push-if 2all? lengthen assert-sequence copy map-reduce move third first 3each tail? set-first prefix bounds-error any? <repetition> trim-slice exchange surround 2reduce cut change-nth min-length set-third produce-as push-all head? delete-slice rest sum-lengths 2each head* infimum glue slice-error subseq replace-slice push repetition map-index trim-head unclip-last mismatch trim
+syn keyword factorKeyword append assert-sequence= find-last-from trim-head-slice clone-like 3sequence assert-sequence? map-as filter! last-index-from reversed index-from cut* pad-tail (indices) concat-as remove-eq but-last snip trim-tail nths nth 2pusher sequence slice? <slice> partition remove-nth tail-slice empty? tail* if-empty find-from virtual-sequence? member? set-length remove-eq! drop-prefix unclip iota unclip-last-slice bounds-error? sequence-hashcode-step map start midpoint@ rest-slice prepend fourth sift delete sigma new-sequence follow like remove-nth! first4 1sequence reverse slice unless-empty padding virtual@ repetition? set-last index 4sequence max-length set-second immutable-sequence first2 first3 replicate-as reduce-index unclip-slice supremum insert-nth trim-tail-slice tail 3append short count suffix concat flip filter sum immutable? 2sequence map-integers delete-all start* indices snip-slice check-slice sequence? head map-find reduce append-as reverse! sequence= halves collapse-slice interleave 2map binary-reduce virtual-seq slice-error? product bounds-check? bounds-check harvest immutable find produce remove pad-head last replicate set-fourth shorten reversed? map-find-last 3map-as 2unclip-slice shorter? 3map find-last head-slice pop* 2map-as tail-slice* but-last-slice 2map-reduce iota? accumulate each pusher cut-slice new-resizable each-index head-slice* 2reverse-each sequence-hashcode member-eq? pop set-nth ?nth <flat-slice> second map! join when-empty accumulator immutable-sequence? <reversed> all? 3append-as virtual-sequence subseq? push-either new-like length last-index push-if 2all? lengthen assert-sequence copy map-reduce move third first 3each tail? set-first prefix bounds-error any? <repetition> trim-slice exchange surround 2reduce cut change-nth min-length set-third produce-as push-all head? delete-slice rest sum-lengths 2each head* infimum glue slice-error subseq replace-slice push repetition map-index trim-head unclip-last mismatch trim
 syn keyword factorKeyword global +@ change set-namestack change-global init-namespaces on off set-global namespace set with-scope bind with-variable inc dec counter initialize namestack get get-global make-assoc
 syn keyword factorKeyword <array> 2array 3array pair >array 1array 4array pair? array resize-array array?
 syn keyword factorKeyword +character+ bad-seek-type? readln stream-seek read print with-output-stream contents write1 stream-write1 stream-copy stream-element-type with-input-stream stream-print stream-read stream-contents bl seek-output bad-seek-type nl stream-nl write flush stream-lines +byte+ stream-flush read1 seek-absolute? stream-read1 lines stream-readln stream-read-until each-line seek-end with-output-stream* seek-absolute with-streams seek-input seek-relative? input-stream stream-write read-partial seek-end? seek-relative error-stream read-until with-input-stream* with-streams* each-block output-stream stream-read-partial