From 082b788cdb4542f280488c25b7a1bbbb29325310 Mon Sep 17 00:00:00 2001 From: Daniel Lee Harple Date: Tue, 2 Dec 2008 01:15:34 -0500 Subject: [PATCH 1/5] Don't add f to vocab-roots --- basis/environment/environment.factor | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/basis/environment/environment.factor b/basis/environment/environment.factor index ca78c3efa7..d6ce34dbcf 100644 --- a/basis/environment/environment.factor +++ b/basis/environment/environment.factor @@ -27,6 +27,9 @@ HOOK: (set-os-envs) os ( seq -- ) } cond [ - "FACTOR_ROOTS" os-env os windows? ";" ":" ? split - [ add-vocab-root ] each + "FACTOR_ROOTS" os-env + [ + os windows? ";" ":" ? split + [ add-vocab-root ] each + ] when* ] "environment" add-init-hook From c27faa3de4e0b156d51a39140cc703c8c509225c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 2 Dec 2008 00:25:23 -0600 Subject: [PATCH 2/5] Remove 3compose: nothing in core used it, and basis code can use fry --- basis/fry/fry-docs.factor | 4 ++-- basis/xmode/utilities/utilities.factor | 26 +++++++++++++------------- core/io/io.factor | 2 +- core/kernel/kernel-docs.factor | 13 ------------- core/kernel/kernel.factor | 3 --- extra/combinators/lib/lib.factor | 2 +- extra/inverse/inverse.factor | 7 +++---- extra/sequences/lib/lib.factor | 6 +----- 8 files changed, 21 insertions(+), 42 deletions(-) diff --git a/basis/fry/fry-docs.factor b/basis/fry/fry-docs.factor index a982ecdd7d..1dff0942bd 100644 --- a/basis/fry/fry-docs.factor +++ b/basis/fry/fry-docs.factor @@ -46,10 +46,10 @@ $nl "{ 10 20 30 } [ sq ] [ . ] compose each" "{ 10 20 30 } [ sq . ] each" } -"The " { $link _ } " and " { $link @ } " specifiers may be freely mixed:" +"The " { $link _ } " and " { $link @ } " specifiers may be freely mixed, and the result is considerably more concise and readable than the version using " { $link curry } " and " { $link compose } " directly:" { $code "{ 8 13 14 27 } [ even? ] 5 '[ @ dup _ ? ] map" - "{ 8 13 14 27 } [ even? ] 5 [ dup ] swap [ ? ] curry 3compose map" + "{ 8 13 14 27 } [ even? ] 5 [ dup ] swap [ ? ] curry compose compose map" "{ 8 13 14 27 } [ even? dup 5 ? ] map" } "The following is a no-op:" diff --git a/basis/xmode/utilities/utilities.factor b/basis/xmode/utilities/utilities.factor index 8f1a6184e8..23e4195158 100644 --- a/basis/xmode/utilities/utilities.factor +++ b/basis/xmode/utilities/utilities.factor @@ -1,30 +1,30 @@ USING: accessors sequences assocs kernel quotations namespaces -xml.data xml.utilities combinators macros parser lexer words ; +xml.data xml.utilities combinators macros parser lexer words fry ; IN: xmode.utilities -: implies >r not r> or ; inline +: implies [ not ] dip or ; inline : child-tags ( tag -- seq ) children>> [ tag? ] filter ; : map-find ( seq quot -- result elt ) f -rot - [ nip ] swap [ dup ] 3compose find - >r [ drop f ] unless r> ; inline + '[ nip @ dup ] find + [ [ drop f ] unless ] dip ; inline : tag-init-form ( spec -- quot ) { { [ dup quotation? ] [ [ object get tag get ] prepose ] } { [ dup length 2 = ] [ - first2 [ - >r >r tag get children>string - r> [ execute ] when* object get r> execute - ] 2curry + first2 '[ + tag get children>string + _ [ execute ] when* object get _ execute + ] ] } { [ dup length 3 = ] [ - first3 [ - >r >r tag get at - r> [ execute ] when* object get r> execute - ] 3curry + first3 '[ + _ tag get at + _ [ execute ] when* object get _ execute + ] ] } } cond ; @@ -36,7 +36,7 @@ MACRO: (init-from-tag) ( specs -- ) [ with-tag-initializer ] curry ; : init-from-tag ( tag tuple specs -- tuple ) - over >r (init-from-tag) r> ; inline + over [ (init-from-tag) ] dip ; inline SYMBOL: tag-handlers SYMBOL: tag-handler-word diff --git a/core/io/io.factor b/core/io/io.factor index c1fd69a16a..fc553cc163 100644 --- a/core/io/io.factor +++ b/core/io/io.factor @@ -65,7 +65,7 @@ SYMBOL: error-stream : with-streams ( input output quot -- ) [ [ with-streams* ] 3curry ] - [ [ drop dispose dispose ] 3curry ] 3bi + [ drop [ [ dispose ] bi@ ] 2curry ] 3bi [ ] cleanup ; inline : tabular-output ( style quot -- ) diff --git a/core/kernel/kernel-docs.factor b/core/kernel/kernel-docs.factor index 3fc3d175a0..91b18d834b 100644 --- a/core/kernel/kernel-docs.factor +++ b/core/kernel/kernel-docs.factor @@ -578,18 +578,6 @@ HELP: prepose { compose prepose } related-words -HELP: 3compose -{ $values { "quot1" callable } { "quot2" callable } { "quot3" callable } { "compose" compose } } -{ $description "Quotation composition. Outputs a " { $link callable } " which calls " { $snippet "quot1" } ", " { $snippet "quot2" } " and then " { $snippet "quot3" } "." } -{ $notes - "The following two lines are equivalent:" - { $code - "3compose call" - "3append call" - } - "However, " { $link 3compose } " runs in constant time, and the compiler is able to compile code which calls composed quotations." -} ; - HELP: dip { $values { "x" object } { "quot" quotation } } { $description "Calls " { $snippet "quot" } " with " { $snippet "obj" } " hidden on the retain stack." } @@ -814,7 +802,6 @@ ARTICLE: "compositional-combinators" "Compositional combinators" { $subsection 3curry } { $subsection with } { $subsection compose } -{ $subsection 3compose } { $subsection prepose } "Quotations also implement the sequence protocol, and can be manipulated with sequence words; see " { $link "quotations" } "." ; diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor index 1677a2faaa..bbe2d348d8 100644 --- a/core/kernel/kernel.factor +++ b/core/kernel/kernel.factor @@ -179,9 +179,6 @@ GENERIC: boa ( ... class -- tuple ) : prepose ( quot1 quot2 -- compose ) swap compose ; inline -: 3compose ( quot1 quot2 quot3 -- compose ) - compose compose ; inline - ! Booleans : not ( obj -- ? ) [ f ] [ t ] if ; inline diff --git a/extra/combinators/lib/lib.factor b/extra/combinators/lib/lib.factor index 9a668b8e6e..0ae86c48c4 100755 --- a/extra/combinators/lib/lib.factor +++ b/extra/combinators/lib/lib.factor @@ -142,7 +142,7 @@ MACRO: multikeep ( word out-indexes -- ... ) [ tuck 2slip ] dip while ; inline : generate ( generator predicate -- obj ) - [ dup ] swap [ dup [ nip ] unless not ] 3compose + '[ dup @ dup [ nip ] unless not ] swap [ ] do-while ; MACRO: predicates ( seq -- quot/f ) diff --git a/extra/inverse/inverse.factor b/extra/inverse/inverse.factor index dfef23b56a..8a2ce57e70 100755 --- a/extra/inverse/inverse.factor +++ b/extra/inverse/inverse.factor @@ -5,7 +5,7 @@ sequences assocs math arrays stack-checker effects generalizations continuations debugger classes.tuple namespaces make vectors bit-arrays byte-arrays strings sbufs math.functions macros sequences.private combinators mirrors -combinators.short-circuit ; +combinators.short-circuit fry ; IN: inverse TUPLE: fail ; @@ -46,7 +46,7 @@ M: no-inverse summary dup word? [ "Badly formed math inverse" throw ] when 1quotation ; : swap-inverse ( math-inverse revquot -- revquot* quot ) - next assure-constant rot second [ swap ] swap 3compose ; + next assure-constant rot second '[ @ swap @ ] ; : pull-inverse ( math-inverse revquot const -- revquot* quot ) assure-constant rot first compose ; @@ -236,8 +236,7 @@ DEFER: _ ] recover ; inline : true-out ( quot effect -- quot' ) - out>> [ ndrop ] curry - [ t ] 3compose ; + out>> '[ @ _ ndrop t ] ; : false-recover ( effect -- quot ) in>> [ ndrop f ] curry [ recover-fail ] curry ; diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index 9dc01c04fa..68bea839a9 100755 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -90,12 +90,8 @@ ERROR: element-not-found ; dupd find over [ element-not-found ] unless >r cut rest r> swap ; inline -: (map-until) ( quot pred -- quot ) - [ dup ] swap 3compose - [ [ drop t ] [ , f ] if ] compose [ find 2drop ] curry ; - : map-until ( seq quot pred -- newseq ) - (map-until) { } make ; + '[ [ @ dup @ [ drop t ] [ , f ] if ] find 2drop ] { } make ; : take-while ( seq quot -- newseq ) [ not ] compose From 53d44bb78c3db1b5b7ab0192ecb944224cf60695 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 2 Dec 2008 00:52:48 -0600 Subject: [PATCH 3/5] remove unused vocab --- basis/unix/statfs/netbsd/authors.txt | 1 - basis/unix/statfs/netbsd/netbsd.factor | 6 ------ basis/unix/statfs/netbsd/tags.txt | 1 - basis/unix/statfs/statfs.factor | 4 ++-- 4 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 basis/unix/statfs/netbsd/authors.txt delete mode 100644 basis/unix/statfs/netbsd/netbsd.factor delete mode 100644 basis/unix/statfs/netbsd/tags.txt diff --git a/basis/unix/statfs/netbsd/authors.txt b/basis/unix/statfs/netbsd/authors.txt deleted file mode 100644 index b4bd0e7b35..0000000000 --- a/basis/unix/statfs/netbsd/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Doug Coleman \ No newline at end of file diff --git a/basis/unix/statfs/netbsd/netbsd.factor b/basis/unix/statfs/netbsd/netbsd.factor deleted file mode 100644 index 5617ca7533..0000000000 --- a/basis/unix/statfs/netbsd/netbsd.factor +++ /dev/null @@ -1,6 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax kernel unix.stat math unix -combinators system io.backend accessors alien.c-types -io.encodings.utf8 alien.strings unix.types unix.statfs io.files ; -IN: unix.statfs.netbsd diff --git a/basis/unix/statfs/netbsd/tags.txt b/basis/unix/statfs/netbsd/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/statfs/netbsd/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/statfs/statfs.factor b/basis/unix/statfs/statfs.factor index bc7b199705..4e3ba0d9f9 100644 --- a/basis/unix/statfs/statfs.factor +++ b/basis/unix/statfs/statfs.factor @@ -8,6 +8,6 @@ os { { linux [ "unix.statfs.linux" require ] } { macosx [ "unix.statfs.macosx" require ] } { freebsd [ "unix.statfs.freebsd" require ] } - { netbsd [ "unix.statfs.netbsd" require ] } - { openbsd [ "unix.statfs.openbsd" require ] } + ! { netbsd [ "unix.statfs.netbsd" require ] } + ! { openbsd [ "unix.statfs.openbsd" require ] } } case From 3a8f784baadfb56f563ddefec32b663b65be0bac Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 2 Dec 2008 00:53:30 -0600 Subject: [PATCH 4/5] add a tags file --- basis/unix/statvfs/freebsd/tags.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 basis/unix/statvfs/freebsd/tags.txt diff --git a/basis/unix/statvfs/freebsd/tags.txt b/basis/unix/statvfs/freebsd/tags.txt new file mode 100644 index 0000000000..6bf68304bb --- /dev/null +++ b/basis/unix/statvfs/freebsd/tags.txt @@ -0,0 +1 @@ +unportable From 90a50c73edbba17df9add74402c8e208a3996575 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 2 Dec 2008 02:45:53 -0600 Subject: [PATCH 5/5] Forgot to add fry to USING: list in sequences.lib --- extra/sequences/lib/lib.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index 68bea839a9..0674b8d9d2 100755 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -5,7 +5,7 @@ USING: combinators.lib kernel sequences math namespaces make assocs random sequences.private shuffle math.functions arrays math.parser math.private sorting strings ascii macros assocs.lib quotations hashtables math.order locals generalizations -math.ranges random ; +math.ranges random fry ; IN: sequences.lib : each-withn ( seq quot n -- ) nwith each ; inline