From: Slava Pestov Date: Thu, 11 Sep 2008 05:37:21 +0000 (-0500) Subject: Merge branch 'master' of git://factorcode.org/git/factor X-Git-Tag: 0.94~2439^2~54 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=7597ebf4620edbd827aa905c42af1efbb6c5cdcd;hp=61a1625880cc606d56971355c06f27a9d23434a8 Merge branch 'master' of git://factorcode.org/git/factor --- diff --git a/basis/alien/arrays/arrays.factor b/basis/alien/arrays/arrays.factor index 71c3fd6ff2..94472e8261 100644 --- a/basis/alien/arrays/arrays.factor +++ b/basis/alien/arrays/arrays.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: alien arrays alien.c-types alien.structs -sequences math kernel namespaces libc cpu.architecture ; +sequences math kernel namespaces make libc cpu.architecture ; IN: alien.arrays UNION: value-type array struct-type ; diff --git a/basis/alien/c-types/c-types.factor b/basis/alien/c-types/c-types.factor index f44941d88f..6a88441be9 100755 --- a/basis/alien/c-types/c-types.factor +++ b/basis/alien/c-types/c-types.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: byte-arrays arrays assocs kernel kernel.private libc math -namespaces parser sequences strings words assocs splitting +namespaces make parser sequences strings words assocs splitting math.parser cpu.architecture alien alien.accessors quotations layouts system compiler.units io.files io.encodings.binary accessors combinators effects continuations ; diff --git a/basis/alien/structs/fields/fields.factor b/basis/alien/structs/fields/fields.factor index 5273c2c7ba..19e5b8c326 100644 --- a/basis/alien/structs/fields/fields.factor +++ b/basis/alien/structs/fields/fields.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays kernel kernel.private math namespaces -sequences strings words effects combinators alien.c-types ; +make sequences strings words effects combinators alien.c-types ; IN: alien.structs.fields TUPLE: field-spec name offset type reader writer ; diff --git a/basis/bootstrap/image/image.factor b/basis/bootstrap/image/image.factor index edfd82dae2..9284728a7a 100755 --- a/basis/bootstrap/image/image.factor +++ b/basis/bootstrap/image/image.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: alien arrays byte-arrays generic assocs hashtables assocs -hashtables.private io kernel kernel.private math namespaces +hashtables.private io kernel kernel.private math namespaces make parser prettyprint sequences sequences.private strings sbufs vectors words quotations assocs system layouts splitting grouping growable classes classes.builtin classes.tuple diff --git a/basis/bootstrap/image/upload/upload.factor b/basis/bootstrap/image/upload/upload.factor index de13b4aed4..f0edf85e65 100755 --- a/basis/bootstrap/image/upload/upload.factor +++ b/basis/bootstrap/image/upload/upload.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: checksums checksums.openssl splitting assocs -kernel io.files bootstrap.image sequences io namespaces +kernel io.files bootstrap.image sequences io namespaces make io.launcher math io.encodings.ascii ; IN: bootstrap.image.upload diff --git a/basis/channels/remote/remote.factor b/basis/channels/remote/remote.factor index 9c1878e14d..1a7addac12 100755 --- a/basis/channels/remote/remote.factor +++ b/basis/channels/remote/remote.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. ! ! Remote Channels -USING: kernel init namespaces assocs arrays random +USING: kernel init namespaces make assocs arrays random sequences channels match concurrency.messaging concurrency.distributed threads accessors ; IN: channels.remote diff --git a/basis/checksums/common/common.factor b/basis/checksums/common/common.factor index ea1c6f5b39..1f25efef24 100644 --- a/basis/checksums/common/common.factor +++ b/basis/checksums/common/common.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2006, 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: kernel math math.bitwise strings io.binary namespaces -grouping ; +make grouping ; IN: checksums.common SYMBOL: bytes-read diff --git a/basis/checksums/sha1/sha1.factor b/basis/checksums/sha1/sha1.factor index 6aa2cfa2eb..bbae421b16 100755 --- a/basis/checksums/sha1/sha1.factor +++ b/basis/checksums/sha1/sha1.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: arrays combinators kernel io io.encodings.binary io.files io.streams.byte-array math.vectors strings sequences namespaces -math parser sequences assocs grouping vectors io.binary hashtables -symbols math.bitwise checksums checksums.common ; +make math parser sequences assocs grouping vectors io.binary +hashtables symbols math.bitwise checksums checksums.common ; IN: checksums.sha1 ! Implemented according to RFC 3174. diff --git a/basis/checksums/sha2/sha2.factor b/basis/checksums/sha2/sha2.factor index ac93c05260..0a6d8c26ab 100755 --- a/basis/checksums/sha2/sha2.factor +++ b/basis/checksums/sha2/sha2.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel splitting grouping math sequences namespaces +USING: kernel splitting grouping math sequences namespaces make io.binary symbols math.bitwise checksums checksums.common sbufs strings ; IN: checksums.sha2 diff --git a/basis/cocoa/enumeration/enumeration.factor b/basis/cocoa/enumeration/enumeration.factor index 765fb65ef2..7de1f24a3c 100644 --- a/basis/cocoa/enumeration/enumeration.factor +++ b/basis/cocoa/enumeration/enumeration.factor @@ -15,7 +15,7 @@ IN: cocoa.enumeration object state stackbuf count -> countByEnumeratingWithState:objects:count: dup zero? [ drop ] [ state NSFastEnumerationState-itemsPtr [ stackbuf ] unless* - '[ , void*-nth quot call ] each + '[ _ void*-nth quot call ] each object quot state stackbuf count (NSFastEnumeration-each) ] if ; inline recursive @@ -24,7 +24,7 @@ IN: cocoa.enumeration : NSFastEnumeration-map ( object quot -- vector ) NS-EACH-BUFFER-SIZE - [ '[ @ , push ] NSFastEnumeration-each ] keep ; inline + [ '[ @ _ push ] NSFastEnumeration-each ] keep ; inline : NSFastEnumeration>vector ( object -- vector ) [ ] NSFastEnumeration-map ; diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor index 7be649416c..7977485b02 100755 --- a/basis/cocoa/messages/messages.factor +++ b/basis/cocoa/messages/messages.factor @@ -1,11 +1,10 @@ ! Copyright (C) 2006, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors alien alien.c-types alien.strings -arrays assocs combinators compiler kernel -math namespaces parser prettyprint prettyprint.sections -quotations sequences strings words cocoa.runtime io macros -memoize debugger io.encodings.ascii effects compiler.generator -libc libc.private ; +USING: accessors alien alien.c-types alien.strings arrays assocs +combinators compiler kernel math namespaces make parser +prettyprint prettyprint.sections quotations sequences strings +words cocoa.runtime io macros memoize debugger +io.encodings.ascii effects compiler.generator libc libc.private ; IN: cocoa.messages : make-sender ( method function -- quot ) diff --git a/basis/cocoa/subclassing/subclassing.factor b/basis/cocoa/subclassing/subclassing.factor index 1ee39c35d5..3f8e709df0 100755 --- a/basis/cocoa/subclassing/subclassing.factor +++ b/basis/cocoa/subclassing/subclassing.factor @@ -4,7 +4,7 @@ USING: alien alien.c-types alien.strings arrays assocs combinators compiler hashtables kernel libc math namespaces parser sequences words cocoa.messages cocoa.runtime compiler.units io.encodings.ascii generalizations -continuations ; +continuations make ; IN: cocoa.subclassing : init-method ( method -- sel imp types ) diff --git a/basis/cocoa/views/views.factor b/basis/cocoa/views/views.factor index 8bfbe330b2..d03688b2be 100644 --- a/basis/cocoa/views/views.factor +++ b/basis/cocoa/views/views.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2006, 2007 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: alien.c-types arrays kernel math namespaces cocoa +USING: alien.c-types arrays kernel math namespaces make cocoa cocoa.messages cocoa.classes cocoa.types sequences continuations ; IN: cocoa.views diff --git a/basis/combinators/short-circuit/short-circuit.factor b/basis/combinators/short-circuit/short-circuit.factor index a484e09de1..7b6c1d126d 100755 --- a/basis/combinators/short-circuit/short-circuit.factor +++ b/basis/combinators/short-circuit/short-circuit.factor @@ -11,7 +11,7 @@ IN: combinators.short-circuit [ '[ drop N ndup @ dup not ] [ drop N ndrop f ] 2array ] map [ t ] [ N nnip ] 2array suffix - '[ f , cond ] ; + '[ f _ cond ] ; MACRO: 0&& ( quots -- quot ) 0 n&&-rewrite ; MACRO: 1&& ( quots -- quot ) 1 n&&-rewrite ; @@ -25,7 +25,7 @@ MACRO: 3&& ( quots -- quot ) 3 n&&-rewrite ; [ '[ drop N ndup @ dup ] [ N nnip ] 2array ] map [ drop N ndrop t ] [ f ] 2array suffix - '[ f , cond ] ; + '[ f _ cond ] ; MACRO: 0|| ( quots -- quot ) 0 n||-rewrite ; MACRO: 1|| ( quots -- quot ) 1 n||-rewrite ; diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index 2dd6e440d5..1558127293 100755 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -54,7 +54,7 @@ SYMBOL: +failed+ H{ } clone dependencies set H{ } clone generic-dependencies set - , { + _ { [ compile-begins ] [ [ build-tree-from-word ] [ compile-failed return ] recover diff --git a/basis/compiler/generator/fixup/fixup.factor b/basis/compiler/generator/fixup/fixup.factor index 5a3337fb32..ecc88a7a5e 100755 --- a/basis/compiler/generator/fixup/fixup.factor +++ b/basis/compiler/generator/fixup/fixup.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays byte-arrays generic assocs hashtables io.binary -kernel kernel.private math namespaces sequences words +kernel kernel.private math namespaces make sequences words quotations strings alien.accessors alien.strings layouts system combinators math.bitwise words.private cpu.architecture math.order accessors growable ; diff --git a/basis/compiler/generator/generator.factor b/basis/compiler/generator/generator.factor index da120ce432..939d6e2276 100755 --- a/basis/compiler/generator/generator.factor +++ b/basis/compiler/generator/generator.factor @@ -1,15 +1,15 @@ - ! Copyright (C) 2004, 2008 Slava Pestov. +! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs classes combinators cpu.architecture effects generic hashtables io kernel -kernel.private layouts math math.parser namespaces prettyprint -quotations sequences system threads words vectors sets deques -continuations.private summary alien alien.c-types +kernel.private layouts math math.parser namespaces make +prettyprint quotations sequences system threads words vectors +sets deques continuations.private summary alien alien.c-types alien.structs alien.strings alien.arrays libc compiler.errors -stack-checker.inlining -compiler.tree compiler.tree.builder compiler.tree.combinators -compiler.tree.propagation.info compiler.generator.fixup -compiler.generator.registers compiler.generator.iterator ; +stack-checker.inlining compiler.tree compiler.tree.builder +compiler.tree.combinators compiler.tree.propagation.info +compiler.generator.fixup compiler.generator.registers +compiler.generator.iterator ; IN: compiler.generator SYMBOL: compile-queue diff --git a/basis/compiler/generator/registers/registers.factor b/basis/compiler/generator/registers/registers.factor index e909db3f83..76d3c32594 100755 --- a/basis/compiler/generator/registers/registers.factor +++ b/basis/compiler/generator/registers/registers.factor @@ -1,9 +1,9 @@ ! Copyright (C) 2006, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs classes classes.private classes.algebra -combinators hashtables kernel layouts math namespaces quotations -sequences system vectors words effects alien byte-arrays -accessors sets math.order cpu.architecture +combinators hashtables kernel layouts math namespaces make +quotations sequences system vectors words effects alien +byte-arrays accessors sets math.order cpu.architecture compiler.generator.fixup ; IN: compiler.generator.registers diff --git a/basis/compiler/tests/curry.factor b/basis/compiler/tests/curry.factor index 61d20fd8ab..ecc2d87b73 100755 --- a/basis/compiler/tests/curry.factor +++ b/basis/compiler/tests/curry.factor @@ -1,5 +1,5 @@ USING: tools.test quotations math kernel sequences -assocs namespaces compiler.units ; +assocs namespaces make compiler.units ; IN: compiler.tests [ 3 ] [ 5 [ [ 2 - ] curry call ] compile-call ] unit-test diff --git a/basis/compiler/tests/templates-early.factor b/basis/compiler/tests/templates-early.factor index 6b2eed0789..d3bc4a8a08 100755 --- a/basis/compiler/tests/templates-early.factor +++ b/basis/compiler/tests/templates-early.factor @@ -3,7 +3,7 @@ IN: compiler.tests USING: compiler compiler.generator compiler.generator.registers compiler.generator.registers.private tools.test namespaces sequences words kernel math effects definitions compiler.units -accessors cpu.architecture ; +accessors cpu.architecture make ; : ( n -- vreg ) int-regs ; diff --git a/basis/compiler/tree/cleanup/cleanup-tests.factor b/basis/compiler/tree/cleanup/cleanup-tests.factor index bb30cda685..a761c8ec1e 100644 --- a/basis/compiler/tree/cleanup/cleanup-tests.factor +++ b/basis/compiler/tree/cleanup/cleanup-tests.factor @@ -36,7 +36,7 @@ compiler.tree.checker ; : inlined? ( quot seq/word -- ? ) [ cleaned-up-tree ] dip dup word? [ 1array ] when - '[ dup #call? [ word>> , member? ] [ drop f ] if ] + '[ dup #call? [ word>> _ member? ] [ drop f ] if ] contains-node? not ; [ f ] [ @@ -457,3 +457,24 @@ cell-bits 32 = [ [ [ >r "A" throw r> ] [ "B" throw ] if ] cleaned-up-tree drop ] unit-test + +! Regression from benchmark.nsieve +: chicken-fingers ( i seq -- ) + 2dup < [ + 2drop + ] [ + chicken-fingers + ] if ; inline recursive + +: buffalo-wings ( i seq -- ) + 2dup < [ + 2dup chicken-fingers + >r 1+ r> buffalo-wings + ] [ + 2drop + ] if ; inline recursive + +[ t ] [ + [ 2 swap >fixnum buffalo-wings ] + { <-integer-fixnum +-integer-fixnum } inlined? +] unit-test diff --git a/basis/compiler/tree/cleanup/cleanup.factor b/basis/compiler/tree/cleanup/cleanup.factor index 44a6a11802..58dc07d868 100644 --- a/basis/compiler/tree/cleanup/cleanup.factor +++ b/basis/compiler/tree/cleanup/cleanup.factor @@ -101,7 +101,7 @@ M: #declare cleanup* drop f ; : delete-unreachable-branches ( #branch -- ) dup live-branches>> '[ - , + _ [ [ [ drop ] [ delete-nodes ] if ] 2each ] [ select-children ] 2bi @@ -148,9 +148,9 @@ M: #branch cleanup* M: #phi cleanup* #! Remove #phi function inputs which no longer exist. live-branches get - [ '[ , sift-children ] change-phi-in-d ] - [ '[ , sift-children ] change-phi-info-d ] - [ '[ , sift-children ] change-terminated ] tri + [ '[ _ sift-children ] change-phi-in-d ] + [ '[ _ sift-children ] change-phi-info-d ] + [ '[ _ sift-children ] change-terminated ] tri eliminate-phi live-branches off ; diff --git a/basis/compiler/tree/combinators/combinators.factor b/basis/compiler/tree/combinators/combinators.factor index 0f4dc3f2a3..f284a06a88 100644 --- a/basis/compiler/tree/combinators/combinators.factor +++ b/basis/compiler/tree/combinators/combinators.factor @@ -6,12 +6,12 @@ IN: compiler.tree.combinators : each-node ( nodes quot: ( node -- ) -- ) dup dup '[ - , [ + _ [ dup #branch? [ - children>> [ , each-node ] each + children>> [ _ each-node ] each ] [ dup #recursive? [ - child>> , each-node + child>> _ each-node ] [ drop ] if ] if ] bi @@ -21,22 +21,22 @@ IN: compiler.tree.combinators dup dup '[ @ dup #branch? [ - [ [ , map-nodes ] map ] change-children + [ [ _ map-nodes ] map ] change-children ] [ dup #recursive? [ - [ , map-nodes ] change-child + [ _ map-nodes ] change-child ] when ] if ] map flatten ; inline recursive : contains-node? ( nodes quot: ( node -- ? ) -- ? ) dup dup '[ - , keep swap [ drop t ] [ + _ keep swap [ drop t ] [ dup #branch? [ - children>> [ , contains-node? ] contains? + children>> [ _ contains-node? ] contains? ] [ dup #recursive? [ - child>> , contains-node? + child>> _ contains-node? ] [ drop f ] if ] if ] if diff --git a/basis/compiler/tree/dead-code/branches/branches.factor b/basis/compiler/tree/dead-code/branches/branches.factor index 0014a1d4d7..a19e49494e 100644 --- a/basis/compiler/tree/dead-code/branches/branches.factor +++ b/basis/compiler/tree/dead-code/branches/branches.factor @@ -33,7 +33,7 @@ M: #branch remove-dead-code* : live-value-indices ( values -- indices ) [ length ] keep live-values get - '[ , nth , key? ] filter ; inline + '[ _ nth _ key? ] filter ; inline : drop-indexed-values ( values indices -- node ) [ drop filter-live ] [ nths ] 2bi @@ -44,13 +44,13 @@ M: #branch remove-dead-code* : insert-drops ( nodes values indices -- nodes' ) '[ over ends-with-terminate? - [ drop ] [ , drop-indexed-values suffix ] if + [ drop ] [ _ drop-indexed-values suffix ] if ] 2map ; : hoist-drops ( #phi -- ) if-node get swap [ phi-in-d>> ] [ out-d>> live-value-indices ] bi - '[ , , insert-drops ] change-children drop ; + '[ _ _ insert-drops ] change-children drop ; : remove-phi-outputs ( #phi -- ) [ filter-live ] change-out-d drop ; diff --git a/basis/compiler/tree/dead-code/simple/simple.factor b/basis/compiler/tree/dead-code/simple/simple.factor index 9ebf064f79..addb13ced3 100755 --- a/basis/compiler/tree/dead-code/simple/simple.factor +++ b/basis/compiler/tree/dead-code/simple/simple.factor @@ -53,7 +53,7 @@ M: #alien-invoke compute-live-values* nip look-at-inputs ; M: #alien-indirect compute-live-values* nip look-at-inputs ; : filter-mapping ( assoc -- assoc' ) - live-values get '[ drop , key? ] assoc-filter ; + live-values get '[ drop _ key? ] assoc-filter ; : filter-corresponding ( new old -- old' ) #! Remove elements from 'old' if the element with the same diff --git a/basis/compiler/tree/debugger/debugger.factor b/basis/compiler/tree/debugger/debugger.factor index db742197a5..691c564661 100644 --- a/basis/compiler/tree/debugger/debugger.factor +++ b/basis/compiler/tree/debugger/debugger.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2006, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel assocs fry match accessors namespaces effects +USING: kernel assocs fry match accessors namespaces make effects sequences sequences.private quotations generic macros arrays prettyprint prettyprint.backend prettyprint.sections math words combinators io sorting hints @@ -16,7 +16,7 @@ IN: compiler.tree.debugger GENERIC: node>quot ( node -- ) MACRO: match-choose ( alist -- ) - [ '[ , ] ] assoc-map '[ , match-cond ] ; + [ [ ] curry ] assoc-map [ match-cond ] curry ; MATCH-VARS: ?a ?b ?c ; diff --git a/basis/compiler/tree/escape-analysis/recursive/recursive.factor b/basis/compiler/tree/escape-analysis/recursive/recursive.factor index 059ac1de02..5aece23d17 100644 --- a/basis/compiler/tree/escape-analysis/recursive/recursive.factor +++ b/basis/compiler/tree/escape-analysis/recursive/recursive.factor @@ -28,7 +28,7 @@ IN: compiler.tree.escape-analysis.recursive : recursive-stacks ( #enter-recursive -- stacks ) recursive-phi-in - escaping-values get '[ [ , disjoint-set-member? ] all? ] filter + escaping-values get '[ [ _ disjoint-set-member? ] all? ] filter flip ; : analyze-recursive-phi ( #enter-recursive -- ) @@ -67,5 +67,5 @@ M: #return-recursive escape-analysis* ( #return-recursive -- ) [ call-next-method ] [ [ in-d>> ] [ label>> calls>> ] bi - [ out-d>> escaping-values get '[ , equate ] 2each ] with each + [ out-d>> escaping-values get '[ _ equate ] 2each ] with each ] bi ; diff --git a/basis/compiler/tree/finalization/finalization.factor b/basis/compiler/tree/finalization/finalization.factor index 5aaeed360a..dafe032ab6 100644 --- a/basis/compiler/tree/finalization/finalization.factor +++ b/basis/compiler/tree/finalization/finalization.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: kernel arrays accessors sequences sequences.private words -fry namespaces math math.order memoize classes.builtin +fry namespaces make math math.order memoize classes.builtin classes.tuple.private slots.private combinators layouts byte-arrays alien.accessors compiler.intrinsics @@ -68,7 +68,7 @@ MEMO: builtin-predicate-expansion ( word -- nodes ) MEMO: (tuple-boa-expansion) ( n -- quot ) [ [ 2 + ] map - [ '[ [ , set-slot ] keep ] % ] each + [ '[ [ _ set-slot ] keep ] % ] each ] [ ] make ; : tuple-boa-expansion ( layout -- quot ) diff --git a/basis/compiler/tree/normalization/normalization.factor b/basis/compiler/tree/normalization/normalization.factor index 587dd6938b..b826a1590b 100644 --- a/basis/compiler/tree/normalization/normalization.factor +++ b/basis/compiler/tree/normalization/normalization.factor @@ -81,7 +81,7 @@ SYMBOL: rename-map [ rename-map get at ] keep or ; : rename-values ( values -- values' ) - rename-map get '[ [ , at ] keep or ] map ; + rename-map get '[ [ _ at ] keep or ] map ; GENERIC: rename-node-values* ( node -- node ) @@ -127,7 +127,7 @@ SYMBOL: introduction-stack : add-renamings ( old new -- ) [ rename-values ] dip - rename-map get '[ , set-at ] 2each ; + rename-map get '[ _ set-at ] 2each ; M: #introduce normalize* out-d>> [ length pop-introductions ] keep add-renamings f ; @@ -158,7 +158,7 @@ M: #branch normalize* M: #phi normalize* remaining-introductions get swap dup terminated>> - '[ , eliminate-phi-introductions ] change-phi-in-d ; + '[ _ eliminate-phi-introductions ] change-phi-in-d ; : (normalize) ( nodes introductions -- nodes ) introduction-stack [ @@ -168,7 +168,7 @@ M: #phi normalize* M: #recursive normalize* dup label>> introductions>> [ drop [ child>> first ] [ in-d>> ] bi >>in-d drop ] - [ make-values '[ , (normalize) ] change-child ] + [ make-values '[ _ (normalize) ] change-child ] 2bi ; M: #enter-recursive normalize* @@ -181,14 +181,14 @@ M: #enter-recursive normalize* : callreturn ( #call-recursive n -- #call-recursive ) - [ [ [ in-d>> ] [ out-d>> ] bi ] [ '[ , head ] ] bi* bi@ add-renamings ] - [ '[ , tail ] [ change-in-d ] [ change-out-d ] bi ] + [ [ [ in-d>> ] [ out-d>> ] bi ] [ '[ _ head ] ] bi* bi@ add-renamings ] + [ '[ _ tail ] [ change-in-d ] [ change-out-d ] bi ] 2bi ; M: #call-recursive normalize* diff --git a/basis/compiler/tree/propagation/branches/branches.factor b/basis/compiler/tree/propagation/branches/branches.factor index f06f6792c7..c76217f8ae 100644 --- a/basis/compiler/tree/propagation/branches/branches.factor +++ b/basis/compiler/tree/propagation/branches/branches.factor @@ -32,7 +32,7 @@ M: #if live-branches M: #dispatch live-branches [ children>> length ] [ in-d>> first value-info interval>> ] bi - '[ , interval-contains? ] map ; + '[ _ interval-contains? ] map ; : live-children ( #branch -- children ) [ children>> ] [ live-branches>> ] bi select-children ; @@ -61,7 +61,7 @@ SYMBOL: infer-children-data infer-children-data get [ '[ - , [ + _ [ dup +bottom+ eq? [ drop null-info ] [ value-info ] if ] bind diff --git a/basis/compiler/tree/propagation/known-words/known-words.factor b/basis/compiler/tree/propagation/known-words/known-words.factor index d31de354d1..d208d31389 100644 --- a/basis/compiler/tree/propagation/known-words/known-words.factor +++ b/basis/compiler/tree/propagation/known-words/known-words.factor @@ -118,7 +118,7 @@ most-negative-fixnum most-positive-fixnum [a,b] : binary-op ( word interval-quot post-proc-quot -- ) '[ - [ binary-op-class ] [ , binary-op-interval ] 2bi + [ binary-op-class ] [ _ binary-op-interval ] 2bi @ ] "outputs" set-word-prop ; @@ -159,14 +159,14 @@ most-negative-fixnum most-positive-fixnum [a,b] in1 in2 op negate-comparison (comparison-constraints) out f--> /\ ; : define-comparison-constraints ( word op -- ) - '[ , comparison-constraints ] "constraints" set-word-prop ; + '[ _ comparison-constraints ] "constraints" set-word-prop ; comparison-ops -[ dup '[ , define-comparison-constraints ] each-derived-op ] each +[ dup '[ _ define-comparison-constraints ] each-derived-op ] each generic-comparison-ops [ dup specific-comparison - '[ , , define-comparison-constraints ] each-derived-op + '[ _ _ define-comparison-constraints ] each-derived-op ] each ! Remove redundant comparisons @@ -179,13 +179,13 @@ generic-comparison-ops [ comparison-ops [ dup '[ - [ , fold-comparison ] "outputs" set-word-prop + [ _ fold-comparison ] "outputs" set-word-prop ] each-derived-op ] each generic-comparison-ops [ dup specific-comparison - '[ , fold-comparison ] "outputs" set-word-prop + '[ _ fold-comparison ] "outputs" set-word-prop ] each : maybe-or-never ( ? -- info ) @@ -221,7 +221,7 @@ generic-comparison-ops [ { >float float } } [ '[ - , + _ [ nip ] [ [ interval>> ] [ class-interval ] bi* interval-intersect diff --git a/basis/compiler/tree/propagation/simple/simple.factor b/basis/compiler/tree/propagation/simple/simple.factor index 809a85a51f..7fc38239f1 100644 --- a/basis/compiler/tree/propagation/simple/simple.factor +++ b/basis/compiler/tree/propagation/simple/simple.factor @@ -68,8 +68,8 @@ M: #declare propagate-before [ in-d>> [ value-info literal?>> ] all? ] [ drop f ] if ; : (fold-call) ( #call word -- info ) - [ [ out-d>> ] [ in-d>> [ value-info literal>> ] map ] bi ] [ '[ , execute ] ] bi* - '[ , , with-datastack [ ] map nip ] + [ [ out-d>> ] [ in-d>> [ value-info literal>> ] map ] bi ] [ '[ _ execute ] ] bi* + '[ _ _ with-datastack [ ] map nip ] [ drop [ object-info ] replicate ] recover ; diff --git a/basis/compiler/tree/tree.factor b/basis/compiler/tree/tree.factor index b6c798ca3c..05f33902ec 100755 --- a/basis/compiler/tree/tree.factor +++ b/basis/compiler/tree/tree.factor @@ -178,7 +178,7 @@ M: #return-recursive inputs/outputs [ in-d>> ] [ out-d>> ] bi ; : shuffle-effect ( #shuffle -- effect ) [ in-d>> ] [ out-d>> ] [ mapping>> ] tri - '[ , at ] map + '[ _ at ] map ; : recursive-phi-in ( #enter-recursive -- seq ) diff --git a/basis/concurrency/messaging/messaging-tests.factor b/basis/concurrency/messaging/messaging-tests.factor index 0f9f97c4cc..dd94ad15b3 100755 --- a/basis/concurrency/messaging/messaging-tests.factor +++ b/basis/concurrency/messaging/messaging-tests.factor @@ -1,9 +1,8 @@ ! Copyright (C) 2005 Chris Double. All Rights Reserved. ! See http://factorcode.org/license.txt for BSD license. -! -USING: kernel threads vectors arrays sequences -namespaces tools.test continuations deques strings math words -match quotations concurrency.messaging concurrency.mailboxes +USING: kernel threads vectors arrays sequences namespaces make +tools.test continuations deques strings math words match +quotations concurrency.messaging concurrency.mailboxes concurrency.count-downs accessors ; IN: concurrency.messaging.tests diff --git a/basis/core-foundation/fsevents/fsevents.factor b/basis/core-foundation/fsevents/fsevents.factor index f14dba6433..bb21391f0a 100644 --- a/basis/core-foundation/fsevents/fsevents.factor +++ b/basis/core-foundation/fsevents/fsevents.factor @@ -1,9 +1,9 @@ ! Copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.strings alien.syntax kernel -math sequences namespaces assocs init accessors continuations -combinators core-foundation core-foundation.run-loop -io.encodings.utf8 destructors ; +math sequences namespaces make assocs init accessors +continuations combinators core-foundation +core-foundation.run-loop io.encodings.utf8 destructors ; IN: core-foundation.fsevents ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! diff --git a/basis/cpu/architecture/architecture.factor b/basis/cpu/architecture/architecture.factor index fc11e0a731..432e748cbf 100755 --- a/basis/cpu/architecture/architecture.factor +++ b/basis/cpu/architecture/architecture.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2006, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays generic kernel kernel.private math memory -namespaces sequences layouts system hashtables classes alien -byte-arrays combinators words sets ; +namespaces make sequences layouts system hashtables classes +alien byte-arrays combinators words sets ; IN: cpu.architecture ! Register classes diff --git a/basis/cpu/ppc/assembler/assembler-tests.factor b/basis/cpu/ppc/assembler/assembler-tests.factor index 9fdaaf712f..f35a5cfca8 100644 --- a/basis/cpu/ppc/assembler/assembler-tests.factor +++ b/basis/cpu/ppc/assembler/assembler-tests.factor @@ -1,6 +1,6 @@ IN: cpu.ppc.assembler.tests USING: cpu.ppc.assembler tools.test arrays kernel namespaces -vocabs sequences ; +make vocabs sequences ; : test-assembler ( expected quot -- ) [ 1array ] [ [ { } make ] curry ] bi* unit-test ; diff --git a/basis/cpu/ppc/assembler/backend/backend.factor b/basis/cpu/ppc/assembler/backend/backend.factor index b881f5a974..1b442662d5 100644 --- a/basis/cpu/ppc/assembler/backend/backend.factor +++ b/basis/cpu/ppc/assembler/backend/backend.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: compiler.generator.fixup kernel namespaces sequences +USING: compiler.generator.fixup kernel namespaces make sequences words math math.bitwise io.binary parser lexer ; IN: cpu.ppc.assembler.backend diff --git a/basis/cpu/x86/architecture/architecture.factor b/basis/cpu/x86/architecture/architecture.factor index 69bc685364..13524aecc4 100755 --- a/basis/cpu/x86/architecture/architecture.factor +++ b/basis/cpu/x86/architecture/architecture.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien alien.c-types arrays cpu.x86.assembler cpu.x86.assembler.private cpu.architecture kernel kernel.private -math memory namespaces sequences words compiler.generator +math memory namespaces make sequences words compiler.generator compiler.generator.registers compiler.generator.fixup system layouts combinators compiler.constants math.order ; IN: cpu.x86.architecture diff --git a/basis/cpu/x86/assembler/assembler-tests.factor b/basis/cpu/x86/assembler/assembler-tests.factor index 4c0f04fcc2..941bbe5b73 100644 --- a/basis/cpu/x86/assembler/assembler-tests.factor +++ b/basis/cpu/x86/assembler/assembler-tests.factor @@ -1,4 +1,4 @@ -USING: cpu.x86.assembler kernel tools.test namespaces ; +USING: cpu.x86.assembler kernel tools.test namespaces make ; IN: cpu.x86.assembler.tests [ { HEX: 49 HEX: 89 HEX: 04 HEX: 24 } ] [ [ R12 [] RAX MOV ] { } make ] unit-test diff --git a/basis/cpu/x86/assembler/assembler.factor b/basis/cpu/x86/assembler/assembler.factor index d9c25d8492..f557bb4adc 100755 --- a/basis/cpu/x86/assembler/assembler.factor +++ b/basis/cpu/x86/assembler/assembler.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays compiler.generator.fixup io.binary kernel -combinators kernel.private math namespaces sequences +combinators kernel.private math namespaces make sequences words system layouts math.order accessors cpu.x86.assembler.syntax ; IN: cpu.x86.assembler diff --git a/basis/csv/csv.factor b/basis/csv/csv.factor index 59a3f21863..133223b6e4 100644 --- a/basis/csv/csv.factor +++ b/basis/csv/csv.factor @@ -4,7 +4,8 @@ ! Simple CSV Parser ! Phil Dawes phil@phildawes.net -USING: kernel sequences io namespaces combinators unicode.categories ; +USING: kernel sequences io namespaces make +combinators unicode.categories ; IN: csv SYMBOL: delimiter diff --git a/basis/db/postgresql/postgresql.factor b/basis/db/postgresql/postgresql.factor index ae31b168cb..38fa4cc715 100755 --- a/basis/db/postgresql/postgresql.factor +++ b/basis/db/postgresql/postgresql.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007, 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs alien alien.syntax continuations io -kernel math math.parser namespaces prettyprint quotations +kernel math math.parser namespaces make prettyprint quotations sequences debugger db db.postgresql.lib db.postgresql.ffi db.tuples db.types tools.annotations math.ranges combinators classes locals words tools.walker diff --git a/basis/db/queries/queries.factor b/basis/db/queries/queries.factor index ede7612942..89c28b5262 100644 --- a/basis/db/queries/queries.factor +++ b/basis/db/queries/queries.factor @@ -1,9 +1,9 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel math namespaces sequences random strings -math.parser math.intervals combinators math.bitwise nmake db -db.tuples db.types db.sql classes words shuffle arrays destructors -continuations ; +USING: accessors kernel math namespaces make sequences random +strings math.parser math.intervals combinators math.bitwise +nmake db db.tuples db.types db.sql classes words shuffle arrays +destructors continuations ; IN: db.queries GENERIC: where ( specs obj -- ) diff --git a/basis/db/tuples/tuples-docs.factor b/basis/db/tuples/tuples-docs.factor index ed605da25f..26ecec0365 100644 --- a/basis/db/tuples/tuples-docs.factor +++ b/basis/db/tuples/tuples-docs.factor @@ -154,7 +154,7 @@ T{ book "Now we've created a book. Let's save it to the database." { $code <" USING: db db.sqlite fry io.files ; : with-book-tutorial ( quot -- ) - '[ "book-tutorial.db" temp-file sqlite-db , with-db ] call ; + '[ "book-tutorial.db" temp-file sqlite-db _ with-db ] call ; [ book recreate-table diff --git a/basis/db/tuples/tuples-tests.factor b/basis/db/tuples/tuples-tests.factor index 3b04454995..67e46f9e18 100755 --- a/basis/db/tuples/tuples-tests.factor +++ b/basis/db/tuples/tuples-tests.factor @@ -201,10 +201,10 @@ TUPLE: annotation n paste-id summary author mode contents ; ! ] with-db : test-sqlite ( quot -- ) - [ ] swap '[ "tuples-test.db" temp-file sqlite-db , with-db ] unit-test ; + [ ] swap '[ "tuples-test.db" temp-file sqlite-db _ with-db ] unit-test ; : test-postgresql ( quot -- ) - [ ] swap '[ { "localhost" "postgres" "foob" "factor-test" } postgresql-db , with-db ] unit-test ; + [ ] swap '[ { "localhost" "postgres" "foob" "factor-test" } postgresql-db _ with-db ] unit-test ; : test-repeated-insert [ ] [ person ensure-table ] unit-test diff --git a/basis/debugger/debugger.factor b/basis/debugger/debugger.factor index 4d01567131..b7fd34c5be 100755 --- a/basis/debugger/debugger.factor +++ b/basis/debugger/debugger.factor @@ -1,12 +1,12 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: slots arrays definitions generic hashtables summary io -kernel math namespaces prettyprint prettyprint.config sequences -assocs sequences.private strings io.styles io.files vectors -words system splitting math.parser classes.tuple continuations -continuations.private combinators generic.math classes.builtin -classes compiler.units generic.standard vocabs init -kernel.private io.encodings accessors math.order +kernel math namespaces make prettyprint prettyprint.config +sequences assocs sequences.private strings io.styles io.files +vectors words system splitting math.parser classes.tuple +continuations continuations.private combinators generic.math +classes.builtin classes compiler.units generic.standard vocabs +init kernel.private io.encodings accessors math.order destructors source-files parser classes.tuple.parser effects.parser lexer compiler.errors generic.parser strings.parser ; diff --git a/basis/debugger/threads/threads.factor b/basis/debugger/threads/threads.factor index 7bb240859e..27ffdc629b 100644 --- a/basis/debugger/threads/threads.factor +++ b/basis/debugger/threads/threads.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors debugger continuations threads threads.private -io io.styles prettyprint kernel math.parser namespaces ; +io io.styles prettyprint kernel math.parser namespaces make ; IN: debugger.threads : error-in-thread. ( thread -- ) diff --git a/basis/delegate/delegate.factor b/basis/delegate/delegate.factor index fd9b9977e1..45cc214792 100755 --- a/basis/delegate/delegate.factor +++ b/basis/delegate/delegate.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors parser generic kernel classes classes.tuple words slots assocs sequences arrays vectors definitions -prettyprint math hashtables sets macros namespaces ; +prettyprint math hashtables sets macros namespaces make ; IN: delegate : protocol-words ( protocol -- words ) diff --git a/basis/disjoint-sets/disjoint-sets.factor b/basis/disjoint-sets/disjoint-sets.factor index 4ef787d33b..ea246cfa28 100644 --- a/basis/disjoint-sets/disjoint-sets.factor +++ b/basis/disjoint-sets/disjoint-sets.factor @@ -64,7 +64,7 @@ M: disjoint-set add-atom [ 1 -rot counts>> set-at ] 2tri ; -: add-atoms ( seq disjoint-set -- ) '[ , add-atom ] each ; +: add-atoms ( seq disjoint-set -- ) '[ _ add-atom ] each ; GENERIC: disjoint-set-member? ( a disjoint-set -- ? ) @@ -89,7 +89,7 @@ M:: disjoint-set equate ( a b disjoint-set -- ) ] if ; : equate-all-with ( seq a disjoint-set -- ) - '[ , , equate ] each ; + '[ _ _ equate ] each ; : equate-all ( seq disjoint-set -- ) over empty? [ 2drop ] [ @@ -102,7 +102,7 @@ M: disjoint-set clone : assoc>disjoint-set ( assoc -- disjoint-set ) - [ '[ drop , add-atom ] assoc-each ] - [ '[ , equate ] assoc-each ] + [ '[ drop _ add-atom ] assoc-each ] + [ '[ _ equate ] assoc-each ] [ nip ] 2tri ; diff --git a/basis/documents/documents.factor b/basis/documents/documents.factor index cac7574e35..54bc85284a 100755 --- a/basis/documents/documents.factor +++ b/basis/documents/documents.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2006, 2007 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays io kernel math models namespaces +USING: accessors arrays io kernel math models namespaces make sequences strings splitting combinators unicode.categories math.order ; IN: documents diff --git a/basis/fry/fry-docs.factor b/basis/fry/fry-docs.factor index 05cde62c1f..286dbb469e 100755 --- a/basis/fry/fry-docs.factor +++ b/basis/fry/fry-docs.factor @@ -1,15 +1,12 @@ USING: help.markup help.syntax quotations kernel ; IN: fry -HELP: , +HELP: _ { $description "Fry specifier. Inserts a literal value into the fried quotation." } ; HELP: @ { $description "Fry specifier. Splices a quotation into the fried quotation." } ; -HELP: _ -{ $description "Fry specifier. Shifts all fry specifiers to the left down by one stack position." } ; - HELP: fry { $values { "quot" quotation } { "quot'" quotation } } { $description "Outputs a quotation that when called, fries " { $snippet "quot" } " by taking values from the stack and substituting them in." } @@ -19,7 +16,7 @@ HELP: fry HELP: '[ { $syntax "code... ]" } -{ $description "Literal fried quotation. Expands into code which takes values from the stack and substitutes them in place of the fry specifiers " { $link , } " and " { $link @ } "." } +{ $description "Literal fried quotation. Expands into code which takes values from the stack and substitutes them in place of the fry specifiers " { $link _ } " and " { $link @ } "." } { $examples "See " { $link "fry.examples" } "." } ; ARTICLE: "fry.examples" "Examples of fried quotations" @@ -27,69 +24,50 @@ ARTICLE: "fry.examples" "Examples of fried quotations" $nl "If a quotation does not contain any fry specifiers, then " { $link POSTPONE: '[ } " behaves just like " { $link POSTPONE: [ } ":" { $code "{ 10 20 30 } '[ . ] each" } -"Occurrences of " { $link , } " on the left map directly to " { $link curry } ". That is, the following three lines are equivalent:" +"Occurrences of " { $link _ } " on the left map directly to " { $link curry } ". That is, the following three lines are equivalent:" { $code - "{ 10 20 30 } 5 '[ , + ] map" + "{ 10 20 30 } 5 '[ _ + ] map" "{ 10 20 30 } 5 [ + ] curry map" "{ 10 20 30 } [ 5 + ] map" } -"Occurrences of " { $link , } " in the middle of a quotation map to more complex quotation composition patterns. The following three lines are equivalent:" +"Occurrences of " { $link _ } " in the middle of a quotation map to more complex quotation composition patterns. The following three lines are equivalent:" { $code - "{ 10 20 30 } 5 '[ 3 , / ] map" + "{ 10 20 30 } 5 '[ 3 _ / ] map" "{ 10 20 30 } 5 [ 3 ] swap [ / ] curry compose map" "{ 10 20 30 } [ 3 5 / ] map" } -"Occurrences of " { $link @ } " are simply syntax sugar for " { $snippet ", call" } ". The following four lines are equivalent:" +"Occurrences of " { $link @ } " are simply syntax sugar for " { $snippet "_ call" } ". The following four lines are equivalent:" { $code "{ 10 20 30 } [ sq ] '[ @ . ] each" "{ 10 20 30 } [ sq ] [ call . ] curry each" "{ 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:" { $code - "{ 8 13 14 27 } [ even? ] 5 '[ @ dup , ? ] map" + "{ 8 13 14 27 } [ even? ] 5 '[ @ dup _ ? ] map" "{ 8 13 14 27 } [ even? ] 5 [ dup ] swap [ ? ] curry 3compose map" "{ 8 13 14 27 } [ even? dup 5 ? ] map" } -"Occurrences of " { $link _ } " have the effect of enclosing all code to their left in a quotation passed to " { $link dip } ". The following four lines are equivalent:" -{ $code - "{ 10 20 30 } 1 '[ , _ / ] map" - "{ 10 20 30 } 1 [ [ ] curry dip / ] curry map" - "{ 10 20 30 } 1 [ swap / ] curry map" - "{ 10 20 30 } [ 1 swap / ] map" -} -"For any quotation body " { $snippet "X" } ", the following two are equivalent:" -{ $code - "[ [ X ] dip ]" - "'[ X _ ]" -} "Here are some built-in combinators rewritten in terms of fried quotations:" { $table - { { $link literalize } { $snippet ": literalize '[ , ] ;" } } - { { $link slip } { $snippet ": slip '[ @ , ] call ;" } } - { { $link dip } { $snippet ": dip '[ @ _ ] call ;" } } - { { $link curry } { $snippet ": curry '[ , @ ] ;" } } - { { $link with } { $snippet ": with swapd '[ , _ @ ] ;" } } + { { $link literalize } { $snippet ": literalize '[ _ ] ;" } } + { { $link slip } { $snippet ": slip '[ @ _ ] call ;" } } + { { $link curry } { $snippet ": curry '[ _ @ ] ;" } } { { $link compose } { $snippet ": compose '[ @ @ ] ;" } } - { { $link bi@ } { $snippet ": bi@ tuck '[ , @ , @ ] call ;" } } + { { $link bi@ } { $snippet ": bi@ tuck '[ _ @ _ @ ] call ;" } } } ; ARTICLE: "fry.philosophy" "Fried quotation philosophy" "Fried quotations generalize quotation-building words such as " { $link curry } " and " { $link compose } ". They can clean up code with lots of currying and composition, particularly when quotations are nested:" { $code - "'[ [ , key? ] all? ] filter" + "'[ [ _ key? ] all? ] filter" "[ [ key? ] curry all? ] curry filter" } "There is a mapping from fried quotations to lexical closures as defined in the " { $vocab-link "locals" } " vocabulary. Namely, a fried quotation is equivalent to a ``let'' form where each local binding is only used once, and bindings are used in the same order in which they are defined. The following two lines are equivalent:" { $code - "'[ 3 , + 4 , / ]" + "'[ 3 _ + 4 _ / ]" "[let | a [ ] b [ ] | [ 3 a + 4 b / ] ]" -} -"The " { $link _ } " fry specifier has no direct analogue in " { $vocab-link "locals" } ", however closure conversion together with the " { $link dip } " combinator achieve the same effect:" -{ $code - "'[ , 2 + , * _ / ]" - "[let | a [ ] b [ ] | [ [ a 2 + b * ] dip / ] ]" } ; ARTICLE: "fry.limitations" "Fried quotation limitations" @@ -101,9 +79,8 @@ $nl "Fried quotations are denoted with a special parsing word:" { $subsection POSTPONE: '[ } "Fried quotations contain zero or more " { $emphasis "fry specifiers" } ":" -{ $subsection , } -{ $subsection @ } { $subsection _ } +{ $subsection @ } "When a fried quotation is being evaluated, values are consumed from the stack and spliced into the quotation from right to left." { $subsection "fry.examples" } { $subsection "fry.philosophy" } diff --git a/basis/fry/fry-tests.factor b/basis/fry/fry-tests.factor index 6d6abba23c..d4a3b8b734 100755 --- a/basis/fry/fry-tests.factor +++ b/basis/fry/fry-tests.factor @@ -2,63 +2,59 @@ IN: fry.tests USING: fry tools.test math prettyprint kernel io arrays sequences ; -[ [ 3 + ] ] [ 3 '[ , + ] ] unit-test +[ [ 3 + ] ] [ 3 '[ _ + ] ] unit-test -[ [ 1 3 + ] ] [ 1 3 '[ , , + ] ] unit-test +[ [ 1 3 + ] ] [ 1 3 '[ _ _ + ] ] unit-test -[ [ 1 + ] ] [ 1 [ + ] '[ , @ ] ] unit-test +[ [ 1 + ] ] [ 1 [ + ] '[ _ @ ] ] unit-test -[ [ 1 + . ] ] [ 1 [ + ] '[ , @ . ] ] unit-test +[ [ 1 + . ] ] [ 1 [ + ] '[ _ @ . ] ] unit-test [ [ + - ] ] [ [ + ] [ - ] '[ @ @ ] ] unit-test [ [ "a" write "b" print ] ] -[ "a" "b" '[ , write , print ] ] unit-test +[ "a" "b" '[ _ write _ print ] ] unit-test [ [ 1 2 + 3 4 - ] ] [ [ + ] [ - ] '[ 1 2 @ 3 4 @ ] ] unit-test [ 1/2 ] [ - 1 '[ , _ / ] 2 swap call + 1 '[ [ _ ] dip / ] 2 swap call ] unit-test [ { { 1 "a" "A" } { 1 "b" "B" } { 1 "c" "C" } } ] [ - 1 '[ , _ _ 3array ] + 1 '[ [ _ ] 2dip 3array ] { "a" "b" "c" } { "A" "B" "C" } rot 2map ] unit-test [ { { 1 "a" } { 1 "b" } { 1 "c" } } ] [ - '[ 1 _ 2array ] + '[ [ 1 ] dip 2array ] { "a" "b" "c" } swap map ] unit-test -[ 1 2 ] [ - 1 2 '[ _ , ] call -] unit-test - [ { { 1 "a" 2 } { 1 "b" 2 } { 1 "c" 2 } } ] [ - 1 2 '[ , _ , 3array ] + 1 2 '[ [ _ ] dip _ 3array ] { "a" "b" "c" } swap map ] unit-test -: funny-dip '[ @ _ ] call ; inline +: funny-dip '[ [ @ ] dip ] call ; inline [ "hi" 3 ] [ "h" "i" 3 [ append ] funny-dip ] unit-test [ { 1 2 3 } ] [ - 3 1 '[ , [ , + ] map ] call + 3 1 '[ _ [ _ + ] map ] call ] unit-test [ { 1 { 2 { 3 } } } ] [ - 1 2 3 '[ , [ , [ , 1array ] call 2array ] call 2array ] call + 1 2 3 '[ _ [ _ [ _ 1array ] call 2array ] call 2array ] call ] unit-test -{ 1 1 } [ '[ [ [ , ] ] ] ] must-infer-as +{ 1 1 } [ '[ [ [ _ ] ] ] ] must-infer-as [ { { { 3 } } } ] [ - 3 '[ [ [ , 1array ] call 1array ] call 1array ] call + 3 '[ [ [ _ 1array ] call 1array ] call 1array ] call ] unit-test [ { { { 3 } } } ] [ - 3 '[ [ [ , 1array ] call 1array ] call 1array ] call + 3 '[ [ [ _ 1array ] call 1array ] call 1array ] call ] unit-test diff --git a/basis/fry/fry.factor b/basis/fry/fry.factor index 2b84d58d06..395d5c3caf 100755 --- a/basis/fry/fry.factor +++ b/basis/fry/fry.factor @@ -1,13 +1,13 @@ ! Copyright (C) 2008 Slava Pestov, Eduardo Cavazos. ! See http://factorcode.org/license.txt for BSD license. USING: kernel sequences combinators parser splitting math -quotations arrays namespaces qualified ; -QUALIFIED: namespaces +quotations arrays make qualified words ; IN: fry -: , ( -- * ) "Only valid inside a fry" throw ; -: @ ( -- * ) "Only valid inside a fry" throw ; : _ ( -- * ) "Only valid inside a fry" throw ; +: @ ( -- * ) "Only valid inside a fry" throw ; + +r suffix r> (shallow-fry) ] } case ] if-empty ; : shallow-fry ( quot -- quot' ) [ ] swap (shallow-fry) ; -: deep-fry ( quot -- quot ) - { _ } last-split1 dup [ - shallow-fry [ >r ] rot - deep-fry [ [ dip ] curry r> compose ] 4array concat - ] [ - drop shallow-fry - ] if ; +PREDICATE: fry-specifier < word { _ @ } memq? ; -: fry-specifier? ( obj -- ? ) { , namespaces:, @ } member? ; +GENERIC: count-inputs ( quot -- n ) + +M: callable count-inputs [ count-inputs ] sigma ; +M: fry-specifier count-inputs drop 1 ; +M: object count-inputs drop 0 ; + +PRIVATE> -: count-inputs ( quot -- n ) - [ - { - { [ dup callable? ] [ count-inputs ] } - { [ dup fry-specifier? ] [ drop 1 ] } - [ drop 0 ] - } cond - ] map sum ; - : fry ( quot -- quot' ) [ [ dup callable? [ - [ count-inputs \ , % ] [ fry % ] bi - ] [ namespaces:, ] if + [ count-inputs \ _ % ] [ fry % ] bi + ] [ , ] if ] each - ] [ ] make deep-fry ; + ] [ ] make shallow-fry ; : '[ \ ] parse-until fry over push-all ; parsing diff --git a/basis/furnace/actions/actions.factor b/basis/furnace/actions/actions.factor index 1370ae95b2..cce098f208 100755 --- a/basis/furnace/actions/actions.factor +++ b/basis/furnace/actions/actions.factor @@ -60,7 +60,7 @@ TUPLE: action rest authorize init display validate submit ; : handle-get ( action -- response ) '[ - , dup display>> [ + _ dup display>> [ { [ init>> call ] [ authorize>> call ] @@ -90,7 +90,7 @@ TUPLE: action rest authorize init display validate submit ; : handle-post ( action -- response ) '[ - , dup submit>> [ + _ dup submit>> [ [ validate>> call ] [ authorize>> call ] [ submit>> call ] @@ -133,4 +133,4 @@ TUPLE: page-action < action template ; : ( -- page ) page-action new-action - dup '[ , template>> ] >>display ; + dup '[ _ template>> ] >>display ; diff --git a/basis/furnace/alloy/alloy.factor b/basis/furnace/alloy/alloy.factor index 29cb37b557..6f5f6fdbf6 100644 --- a/basis/furnace/alloy/alloy.factor +++ b/basis/furnace/alloy/alloy.factor @@ -14,7 +14,7 @@ IN: furnace.alloy '[ - , , + _ _ ] call ; @@ -26,5 +26,5 @@ IN: furnace.alloy : start-expiring ( db params -- ) '[ - , , [ state-classes [ expire-state ] each ] with-db + _ _ [ state-classes [ expire-state ] each ] with-db ] 5 minutes every drop ; diff --git a/basis/furnace/auth/auth.factor b/basis/furnace/auth/auth.factor index 54e936a313..8e18c18df9 100755 --- a/basis/furnace/auth/auth.factor +++ b/basis/furnace/auth/auth.factor @@ -125,7 +125,7 @@ TUPLE: secure-realm-only < filter-responder ; C: secure-realm-only M: secure-realm-only call-responder* - '[ , , call-next-method ] if-secure-realm ; + '[ _ _ call-next-method ] if-secure-realm ; TUPLE: protected < filter-responder description capabilities ; diff --git a/basis/furnace/auth/basic/basic.factor b/basis/furnace/auth/basic/basic.factor index ff3c302b40..a9b367c5c9 100755 --- a/basis/furnace/auth/basic/basic.factor +++ b/basis/furnace/auth/basic/basic.factor @@ -1,6 +1,6 @@ ! Copyright (c) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel splitting base64 namespaces strings +USING: accessors kernel splitting base64 namespaces make strings http http.server.responses furnace.auth ; IN: furnace.auth.basic diff --git a/basis/furnace/auth/features/recover-password/recover-password.factor b/basis/furnace/auth/features/recover-password/recover-password.factor index 77915f1083..a0fd05c6d4 100644 --- a/basis/furnace/auth/features/recover-password/recover-password.factor +++ b/basis/furnace/auth/features/recover-password/recover-password.factor @@ -1,7 +1,7 @@ ! Copyright (c) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: namespaces accessors kernel assocs arrays io.sockets threads -fry urls smtp validators html.forms present +USING: namespaces make accessors kernel assocs arrays io.sockets +threads fry urls smtp validators html.forms present http http.server.responses http.server.redirection http.server.dispatchers furnace furnace.actions furnace.auth furnace.auth.providers @@ -43,7 +43,7 @@ SYMBOL: lost-password-from ] "" make >>body ; : send-password-email ( user -- ) - '[ , password-email send-email ] + '[ _ password-email send-email ] "E-mail send thread" spawn drop ; : ( -- action ) diff --git a/basis/furnace/chloe-tags/chloe-tags.factor b/basis/furnace/chloe-tags/chloe-tags.factor index 8822bca519..4e619ad534 100644 --- a/basis/furnace/chloe-tags/chloe-tags.factor +++ b/basis/furnace/chloe-tags/chloe-tags.factor @@ -56,7 +56,7 @@ CHLOE: write-atom drop [ write-atom-feeds ] [code] ; : compile-link-attrs ( tag -- ) #! Side-effects current namespace. - attrs>> '[ [ , _ link-attr ] each-responder ] [code] ; + attrs>> '[ [ [ _ ] dip link-attr ] each-responder ] [code] ; : a-start-tag ( tag -- ) [ compile-link-attrs ] [ compile-a-url ] bi @@ -72,7 +72,7 @@ CHLOE: a : compile-hidden-form-fields ( for -- ) '[ - , [ "," split [ hidden render ] each ] when* + _ [ "," split [ hidden render ] each ] when* nested-forms get " " join f like nested-forms-key hidden-form-field [ modify-form ] each-responder ] [code] ; diff --git a/basis/furnace/conversations/conversations.factor b/basis/furnace/conversations/conversations.factor index 26b62f9b07..1c28193de8 100644 --- a/basis/furnace/conversations/conversations.factor +++ b/basis/furnace/conversations/conversations.factor @@ -109,8 +109,8 @@ M: conversations call-responder* : restore-conversation ( seq -- ) conversation get dup [ namespace>> - [ '[ , key? ] filter ] - [ '[ [ , at ] keep set ] each ] + [ '[ _ key? ] filter ] + [ '[ [ _ at ] keep set ] each ] bi ] [ 2drop ] if ; diff --git a/basis/furnace/furnace.factor b/basis/furnace/furnace.factor index b90587fba8..6a798abb9f 100644 --- a/basis/furnace/furnace.factor +++ b/basis/furnace/furnace.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: namespaces assocs sequences kernel classes splitting +USING: namespaces make assocs sequences kernel classes splitting vocabs.loader accessors strings combinators arrays continuations present fry urls html.elements diff --git a/basis/furnace/redirection/redirection.factor b/basis/furnace/redirection/redirection.factor index 942cafd21a..ff3ce951cb 100644 --- a/basis/furnace/redirection/redirection.factor +++ b/basis/furnace/redirection/redirection.factor @@ -42,4 +42,4 @@ C: secure-only } cond ; inline M: secure-only call-responder* - '[ , , call-next-method ] if-secure ; + '[ _ _ call-next-method ] if-secure ; diff --git a/basis/furnace/sessions/sessions-tests.factor b/basis/furnace/sessions/sessions-tests.factor index 98d1bbdfc9..ff089a92b2 100755 --- a/basis/furnace/sessions/sessions-tests.factor +++ b/basis/furnace/sessions/sessions-tests.factor @@ -1,10 +1,9 @@ IN: furnace.sessions.tests -USING: tools.test http furnace.sessions -furnace.actions http.server http.server.responses -math namespaces kernel accessors io.sockets io.servers.connection -prettyprint io.streams.string io.files splitting destructors -sequences db db.tuples db.sqlite continuations urls math.parser -furnace ; +USING: tools.test http furnace.sessions furnace.actions +http.server http.server.responses math namespaces make kernel +accessors io.sockets io.servers.connection prettyprint +io.streams.string io.files splitting destructors sequences db +db.tuples db.sqlite continuations urls math.parser furnace ; : with-session [ diff --git a/basis/furnace/syndication/syndication.factor b/basis/furnace/syndication/syndication.factor index 31a978aef3..396296bfac 100644 --- a/basis/furnace/syndication/syndication.factor +++ b/basis/furnace/syndication/syndication.factor @@ -44,7 +44,7 @@ TUPLE: feed-action < action title url entries ; feed-action new-action dup '[ feed new - , + _ [ title>> call >>title ] [ url>> call adjust-url relative-to-request >>url ] [ entries>> call process-entries >>entries ] diff --git a/basis/generalizations/generalizations.factor b/basis/generalizations/generalizations.factor index c97e9c7b91..069d59cee1 100755 --- a/basis/generalizations/generalizations.factor +++ b/basis/generalizations/generalizations.factor @@ -6,24 +6,24 @@ math.ranges combinators macros quotations fry arrays ; IN: generalizations MACRO: nsequence ( n seq -- quot ) - [ drop ] [ '[ , , new-sequence ] ] 2bi - [ '[ @ [ , swap set-nth-unsafe ] keep ] ] reduce ; + [ drop ] [ '[ _ _ new-sequence ] ] 2bi + [ '[ @ [ _ swap set-nth-unsafe ] keep ] ] reduce ; MACRO: narray ( n -- quot ) - '[ , { } nsequence ] ; + '[ _ { } nsequence ] ; MACRO: firstn ( n -- ) dup zero? [ drop [ drop ] ] [ - [ [ '[ , _ nth-unsafe ] ] map ] - [ 1- '[ , _ bounds-check 2drop ] ] - bi prefix '[ , cleave ] + [ [ '[ [ _ ] dip nth-unsafe ] ] map ] + [ 1- '[ [ _ ] dip bounds-check 2drop ] ] + bi prefix '[ _ cleave ] ] if ; MACRO: npick ( n -- ) 1- dup saver [ dup ] rot [ r> swap ] n*quot 3append ; MACRO: ndup ( n -- ) - dup '[ , npick ] n*quot ; + dup '[ _ npick ] n*quot ; MACRO: nrot ( n -- ) 1- dup saver swap [ r> swap ] n*quot append ; @@ -41,7 +41,7 @@ MACRO: ntuck ( n -- ) 2 + [ dupd -nrot ] curry ; MACRO: nrev ( n -- quot ) - 1 [a,b] [ ] [ '[ @ , -nrot ] ] reduce ; + 1 [a,b] [ ] [ '[ @ _ -nrot ] ] reduce ; MACRO: ndip ( quot n -- ) dup saver -rot restorer 3append ; @@ -51,7 +51,7 @@ MACRO: nslip ( n -- ) MACRO: nkeep ( n -- ) [ ] [ 1+ ] [ ] tri - '[ [ , ndup ] dip , -nrot , nslip ] ; + '[ [ _ ndup ] dip _ -nrot _ nslip ] ; MACRO: ncurry ( n -- ) [ curry ] n*quot ; @@ -61,5 +61,5 @@ MACRO: nwith ( n -- ) MACRO: napply ( n -- ) 2 [a,b] - [ [ 1- ] keep '[ , ntuck , nslip ] ] + [ [ 1- ] keep '[ _ ntuck _ nslip ] ] map concat >quotation [ call ] append ; diff --git a/basis/help/handbook/handbook.factor b/basis/help/handbook/handbook.factor index 1b488b1d48..9d57e758c1 100755 --- a/basis/help/handbook/handbook.factor +++ b/basis/help/handbook/handbook.factor @@ -108,6 +108,7 @@ USE: io.buffers ARTICLE: "collections" "Collections" { $heading "Sequences" } { $subsection "sequences" } +{ $subsection "namespaces-make" } "Fixed-length sequences:" { $subsection "arrays" } { $subsection "quotations" } diff --git a/basis/help/help.factor b/basis/help/help.factor index b2fff22372..686578f1b6 100755 --- a/basis/help/help.factor +++ b/basis/help/help.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays io io.styles kernel namespaces parser -prettyprint sequences words assocs definitions generic +USING: accessors arrays io io.styles kernel namespaces make +parser prettyprint sequences words assocs definitions generic quotations effects slots continuations classes.tuple debugger combinators vocabs help.stylesheet help.topics help.crossref help.markup sorting classes vocabs.loader ; diff --git a/basis/help/lint/lint.factor b/basis/help/lint/lint.factor index 4ad9067457..d49262e7c8 100755 --- a/basis/help/lint/lint.factor +++ b/basis/help/lint/lint.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2006, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: fry accessors sequences parser kernel help help.markup -help.topics words strings classes tools.vocabs namespaces io -io.streams.string prettyprint definitions arrays vectors +help.topics words strings classes tools.vocabs namespaces make +io io.streams.string prettyprint definitions arrays vectors combinators combinators.short-circuit splitting debugger hashtables sorting effects vocabs vocabs.loader assocs editors continuations classes.predicate macros math sets eval ; @@ -39,7 +39,7 @@ IN: help.lint $predicate $class-description $error-description - } swap '[ , elements empty? not ] contains? ; + } swap '[ _ elements empty? not ] contains? ; : check-values ( word element -- ) { @@ -110,7 +110,7 @@ M: help-error error. H{ } clone [ '[ dup >link where dup - [ first , at , push-at ] [ 2drop ] if + [ first _ at _ push-at ] [ 2drop ] if ] each ] keep ; diff --git a/basis/help/markup/markup.factor b/basis/help/markup/markup.factor index 3077a93ed4..b5e074b598 100755 --- a/basis/help/markup/markup.factor +++ b/basis/help/markup/markup.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays definitions generic io kernel assocs -hashtables namespaces parser prettyprint sequences strings +hashtables namespaces make parser prettyprint sequences strings io.styles vectors words math sorting splitting classes slots vocabs help.stylesheet help.topics vocabs.loader alias ; IN: help.markup diff --git a/basis/help/topics/topics.factor b/basis/help/topics/topics.factor index cdb32b18ee..e6b19d5baa 100755 --- a/basis/help/topics/topics.factor +++ b/basis/help/topics/topics.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license.x USING: accessors arrays definitions generic assocs -io kernel namespaces prettyprint prettyprint.sections +io kernel namespaces make prettyprint prettyprint.sections sequences words summary classes strings vocabs ; IN: help.topics diff --git a/basis/hints/hints.factor b/basis/hints/hints.factor index da6ab96959..499267de7c 100644 --- a/basis/hints/hints.factor +++ b/basis/hints/hints.factor @@ -21,7 +21,7 @@ IN: hints : specializer-cases ( quot word -- default alist ) dup [ array? ] all? [ 1array ] unless [ [ make-specializer ] keep - '[ , declare ] pick append + '[ _ declare ] pick append ] { } map>assoc ; : method-declaration ( method -- quot ) @@ -30,7 +30,7 @@ IN: hints bi prefix ; : specialize-method ( quot method -- quot' ) - method-declaration '[ , declare ] prepend ; + method-declaration '[ _ declare ] prepend ; : specialize-quot ( quot specializer -- quot' ) specializer-cases alist>quot ; diff --git a/basis/html/components/components.factor b/basis/html/components/components.factor index 0969dd7ef3..6965cb582a 100644 --- a/basis/html/components/components.factor +++ b/basis/html/components/components.factor @@ -88,7 +88,7 @@ TUPLE: choice size multiple choices ; ; : render-options ( options selected -- ) - '[ dup , member? render-option ] each ; + '[ dup _ member? render-option ] each ; M: choice render*