Merge branch 'master' of git://factorcode.org/git/factor

db4
Slava Pestov 2008-06-30 16:06:30 -05:00
commit 6165c86229
16 changed files with 83 additions and 59 deletions

View File

@ -1,61 +1,59 @@
USING: kernel parser namespaces quotations arrays vectors strings USING: kernel parser combinators sequences splitting quotations arrays macros
sequences assocs classes.tuple math combinators ; arrays.lib combinators.cleave combinators.conditional newfx ;
IN: bake IN: bake
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: insert-quot expr ; SYMBOL: ,
SYMBOL: @
C: <insert-quot> insert-quot : comma? ( obj -- ? ) , = ;
: atsym? ( obj -- ? ) @ = ;
: ,[ \ ] [ >quotation <insert-quot> ] parse-literal ; parsing
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TUPLE: splice-quot expr ; DEFER: [bake-array]
C: <splice-quot> splice-quot : broil-element ( obj -- quot )
{
: %[ \ ] [ >quotation <splice-quot> ] parse-literal ; parsing { [ comma? ] [ drop [ >r ] ] }
{ [ array? ] [ [bake-array] [ >r ] append ] }
{ [ drop t ] [ [ >r ] prefix-on ] }
}
1cond ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: ,u ( seq -- seq ) unclip building get push ; : [broil] ( array -- quot )
[ reverse [ broil-element ] map concat ]
[ length [ drop [ r> ] ] map concat ]
[ length [ narray ] prefix-on ]
tri append append
>quotation ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SYMBOL: exemplar : [simmer] ( array -- quot )
: reset-building ( -- ) 1024 <vector> building set ; { @ } split reverse
[ [ [bake-array] [ append ] append [ >r ] append ] map concat ]
[ length [ drop [ r> append ] ] map concat ]
bi
: save-exemplar ( seq -- seq ) dup exemplar set ; >r 2 head* [ >r ] append r> ! remove the last append
: finish-baking ( -- seq ) building get exemplar get like ; [ { } ] swap append
DEFER: bake append ;
: bake-item ( item -- )
{ { [ dup \ , = ] [ drop , ] }
{ [ dup \ % = ] [ drop % ] }
{ [ dup \ ,u = ] [ drop ,u ] }
{ [ dup insert-quot? ] [ insert-quot-expr call , ] }
{ [ dup splice-quot? ] [ splice-quot-expr call % ] }
{ [ dup integer? ] [ , ] }
{ [ dup string? ] [ , ] }
{ [ dup tuple? ] [ tuple>array bake >tuple , ] }
{ [ dup assoc? ] [ [ >alist bake ] keep assoc-like , ] }
{ [ dup sequence? ] [ bake , ] }
{ [ t ] [ , ] } }
cond ;
: bake-items ( seq -- ) [ bake-item ] each ;
: bake ( seq -- seq )
[ reset-building save-exemplar bake-items finish-baking ] with-scope ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: `{ \ } [ >array ] parse-literal \ bake parsed ; parsing : [bake-array] ( array -- quot ) [ @ member? ] [ [simmer] ] [ [broil] ] 1if ;
MACRO: bake-array ( array -- quot ) [bake-array] ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: `{ \ } [ >array ] parse-literal \ bake-array parsed ; parsing

View File

@ -1,7 +1,7 @@
USING: kernel debugger system namespaces sequences splitting combinators USING: kernel debugger system namespaces sequences splitting combinators
io io.files io.launcher prettyprint bootstrap.image io io.files io.launcher prettyprint bootstrap.image
bake combinators.cleave combinators.cleave
builder.util builder.util
builder.common builder.common
builder.release.branch builder.release.branch

View File

@ -6,7 +6,7 @@ USING: kernel words namespaces classes parser continuations
combinators sequences splitting quotations arrays strings tools.time combinators sequences splitting quotations arrays strings tools.time
sequences.deep accessors assocs.lib sequences.deep accessors assocs.lib
io.encodings.utf8 io.encodings.utf8
combinators.cleave bake calendar calendar.format ; combinators.cleave calendar calendar.format ;
IN: builder.util IN: builder.util

View File

@ -0,0 +1,17 @@
USING: kernel combinators sequences macros fry newfx combinators.cleave ;
IN: combinators.conditional
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MACRO: 1if ( test then else -- ) '[ dup @ , , if ] ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MACRO: 1cond ( tbl -- )
[ [ 1st [ dup ] prepend ] [ 2nd ] bi {2} ] map
[ cond ] prefix-on ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

View File

@ -15,7 +15,7 @@ threads calendar prettyprint destructors io.timeouts ;
[ t ] [ [ t ] [
"m" get next-change drop "m" get next-change drop
[ "." = ] [ "monitor-test-self" temp-file = ] bi or [ "" = ] [ "monitor-test-self" temp-file = ] bi or
] unit-test ] unit-test
[ ] [ "m" get dispose ] unit-test [ ] [ "m" get dispose ] unit-test

View File

@ -196,3 +196,7 @@ METHOD: as-mutate { object object assoc } set-at ;
: adjoin-on ( elt seq -- seq ) tuck sets:adjoin ; : adjoin-on ( elt seq -- seq ) tuck sets:adjoin ;
: adjoined ( set elt -- ) swap sets:adjoin ; : adjoined ( set elt -- ) swap sets:adjoin ;
: adjoined-on ( elt set -- ) sets:adjoin ; : adjoined-on ( elt set -- ) sets:adjoin ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: start ( seq subseq -- i ) swap sequences:start ;

View File

@ -1,6 +1,6 @@
USING: kernel namespaces arrays quotations sequences assocs combinators USING: kernel namespaces arrays quotations sequences assocs combinators
mirrors math math.vectors random macros bake ; mirrors math math.vectors random macros fry ;
IN: random-weighted IN: random-weighted
@ -16,5 +16,5 @@ probabilities layers [ 1000 * ] map 1000 random [ > ] curry find drop ;
dup [ second ] map swap [ first ] map random-weighted swap nth ; dup [ second ] map swap [ first ] map random-weighted swap nth ;
MACRO: call-random-weighted ( exp -- ) MACRO: call-random-weighted ( exp -- )
[ keys ] [ values <enum> >alist ] bi swap [ keys ] [ values <enum> >alist ] bi
[ , random-weighted , case ] bake ; '[ , random-weighted , case ] ;

View File

@ -1,5 +1,6 @@
USING: kernel parser namespaces threads arrays sequences unix unix.process bake ; USING: kernel parser namespaces threads arrays sequences unix unix.process
bake ;
IN: raptor IN: raptor

View File

@ -14,8 +14,11 @@ IN: rewrite-closures
\ set-parameters [ [set-parameters] ] 1 define-transform \ set-parameters [ [set-parameters] ] 1 define-transform
: parametric-quot ( parameters quot -- quot ) ! : parametric-quot ( parameters quot -- quot )
[ [ swap ] set-parameters [ ] call ] make* ; ! [ [ swap ] set-parameters [ ] call ] make* ;
: parametric-quot ( parameters quot -- quot ) '[ , set-parameters , call ] ;
: scoped-quot ( quot -- quot ) [ with-scope ] curry ; : scoped-quot ( quot -- quot ) [ with-scope ] curry ;

View File

@ -12,15 +12,15 @@ IN: size-of
VAR: headers VAR: headers
: include-headers ( -- seq ) : include-headers ( -- seq )
headers> [ { "#include <" , ">" } bake to-string ] map ; headers> [ `{ "#include <" , ">" } to-string ] map ;
: size-of-c-program ( type -- lines ) : size-of-c-program ( type -- lines )
{ `{
"#include <stdio.h>" "#include <stdio.h>"
include-headers include-headers
{ "main() { printf( \"%i\" , sizeof( " , " ) ) ; }" } { "main() { printf( \"%i\" , sizeof( " , " ) ) ; }" }
} }
bake to-strings ; to-strings ;
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

View File

@ -1,6 +1,6 @@
USING: kernel namespaces arrays sequences threads math math.vectors USING: kernel namespaces arrays sequences threads math math.vectors
ui random bake springies springies.ui ; ui random springies springies.ui ;
IN: springies.models.2x2snake IN: springies.models.2x2snake

View File

@ -1,5 +1,5 @@
USING: kernel namespaces arrays sequences threads math ui random bake USING: kernel namespaces arrays sequences threads math ui random fry
springies springies.ui ; springies springies.ui ;
IN: springies.models.3snake IN: springies.models.3snake
@ -158,8 +158,10 @@ times
; ;
: go* ( quot -- ) ! : go* ( quot -- )
[ [ [ springies-window* 1000 sleep % ] with-scope ] with-ui ] bake call ; ! [ [ [ springies-window* 1000 sleep % ] with-scope ] with-ui ] bake call ;
: go* ( quot -- ) '[ [ springies-window* 1000 sleep @ ] with-scope ] with-ui ;
! : go ( -- ) [ [ springies-window* 1000 sleep model ] with-scope ] with-ui ; ! : go ( -- ) [ [ springies-window* 1000 sleep model ] with-scope ] with-ui ;

View File

@ -1,5 +1,5 @@
USING: kernel namespaces arrays sequences threads math ui random bake USING: kernel namespaces arrays sequences threads math ui random
springies springies.ui ; springies springies.ui ;
IN: springies.models.belt-tire IN: springies.models.belt-tire

View File

@ -1,6 +1,6 @@
USING: kernel namespaces arrays sequences threads math math.vectors USING: kernel namespaces arrays sequences threads math math.vectors
ui random bake springies springies.ui ; ui random springies springies.ui ;
IN: springies.models.nifty IN: springies.models.nifty

View File

@ -1,6 +1,6 @@
USING: kernel namespaces arrays sequences threads math math.vectors USING: kernel namespaces arrays sequences threads math math.vectors
ui random bake ui random
springies springies.ui ; springies springies.ui ;
IN: springies.models.urchin IN: springies.models.urchin

View File

@ -1,7 +1,7 @@
USING: kernel namespaces threads sequences math math.vectors USING: kernel namespaces threads sequences math math.vectors
opengl.gl opengl colors ui ui.gadgets ui.gadgets.slate opengl.gl opengl colors ui ui.gadgets ui.gadgets.slate
bake rewrite-closures vars springies ; fry rewrite-closures vars springies ;
IN: springies.ui IN: springies.ui
@ -62,5 +62,4 @@ DEFER: maybe-loop
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: go* ( quot -- ) : go* ( quot -- ) '[ [ springies-window* 1000 sleep @ ] with-scope ] with-ui ;
[ [ [ springies-window* 1000 sleep % ] with-scope ] with-ui ] bake call ;