2dup load-library dlsym [ 2nip ] [ no-such-symbol ] if* ;
SYNTAX: &:
- scan "c-library" get '[ _ _ address-of ] over push-all ;
+ scan "c-library" get '[ _ _ address-of ] append! ;
: global-quot ( type word -- quot )
name>> "c-library" get '[ _ _ address-of 0 ]
: parse-struct-slots ( slots -- slots' more? )
scan {
{ ";" [ f ] }
- { "{" [ parse-struct-slot over push t ] }
+ { "{" [ parse-struct-slot suffix! t ] }
{ f [ unexpected-eof ] }
[ invalid-struct-slot ]
} case ;
: parse-struct-slot` ( accum -- accum )
scan-string-param scan-c-type` \ } parse-until
- [ <struct-slot-spec> over push ] 3curry over push-all ;
+ [ <struct-slot-spec> suffix! ] 3curry append! ;
: parse-struct-slots` ( accum -- accum more? )
scan {
FUNCTOR-SYNTAX: STRUCT:
scan-param suffix!
- [ 8 <vector> ] over push-all
+ [ 8 <vector> ] append!
[ parse-struct-slots` ] [ ] while
- [ >array define-struct-class ] over push-all ;
+ [ >array define-struct-class ] append! ;
USING: vocabs vocabs.loader ;
M: object deep-fry , ;
-SYNTAX: '[ parse-quotation fry over push-all ;
+SYNTAX: '[ parse-quotation fry append! ;
: parse-definition* ( accum -- accum )
parse-definition >fake-quotations suffix!
- [ fake-quotations> first ] over push-all ;
+ [ fake-quotations> first ] append! ;
: parse-declared* ( accum -- accum )
complete-effect
FUNCTOR-SYNTAX: M:
scan-param suffix!
scan-param suffix!
- [ create-method-in dup method-body set ] over push-all
+ [ create-method-in dup method-body set ] append!
parse-definition*
\ define* suffix! ;
scan-param suffix!
scan-param suffix!
complete-effect
- [ [ [ boa ] curry ] over push-all ] dip suffix!
+ [ [ [ boa ] curry ] append! ] dip suffix!
\ define-declared* suffix! ;
FUNCTOR-SYNTAX: :
parse-declared*
\ define-macro suffix! ;
-FUNCTOR-SYNTAX: inline [ word make-inline ] over push-all ;
+FUNCTOR-SYNTAX: inline [ word make-inline ] append! ;
FUNCTOR-SYNTAX: call-next-method T{ fake-call-next-method } suffix! ;
SYNTAX: I[
"]I" parse-multiline-string
- interpolate-locals over push-all ;
+ interpolate-locals append! ;
: read-loop ( count port accum -- )
pick over length - dup 0 > [
pick read-step dup [
- over push-all read-loop
+ append! read-loop
] [
2drop 2drop
] if
: read-until-loop ( seps port buf -- separator/f )
2over read-until-step over [
- [ over push-all ] dip dup [
+ [ append! ] dip dup [
[ 3drop ] dip
] [
drop read-until-loop
scan locals get [ :>-outside-lambda-error ] unless*
[ make-local ] bind <def> suffix! ;
-SYNTAX: [| parse-lambda over push-all ;
+SYNTAX: [| parse-lambda append! ;
-SYNTAX: [let parse-let over push-all ;
+SYNTAX: [let parse-let append! ;
-SYNTAX: [let* parse-let* over push-all ;
+SYNTAX: [let* parse-let* append! ;
-SYNTAX: [wlet parse-wlet over push-all ;
+SYNTAX: [wlet parse-wlet append! ;
SYNTAX: :: (::) define-declared ;
<PRIVATE
: flatten-vectors ( pair -- vector )
- first2 over push-all ;
+ first2 append! ;
PRIVATE>
word swap effect define-declared
]
] with-compilation-unit
- ] over push-all
+ ] append!
] ;
USING: vocabs vocabs.loader ;
[ pick '[ _ random-32* 4 >le _ push-all ] times ]
[
over zero?
- [ 2drop ] [ random-32* 4 >le swap head over push-all ] if
+ [ 2drop ] [ random-32* 4 >le swap head append! ] if
] bi-curry bi* ;
M: object random-32* ( tuple -- r ) 4 swap random-bytes* le> ;
: ?push-all ( seq1 seq2 -- seq1+seq2 )
[
- over [ [ V{ } like ] dip over push-all ] [ nip ] if
+ over [ [ V{ } like ] dip append! ] [ nip ] if
] when* ;
: rule-set-no-word-sep* ( ruleset -- str )
"(" expect ")" parse-effect ;
: parse-call( ( accum word -- accum )
- [ ")" parse-effect ] dip 2array over push-all ;
+ [ ")" parse-effect ] dip 2array append! ;
: concat-as ( seq exemplar -- newseq )
swap [ { } ] [
[ sum-lengths over new-resizable ] keep
- [ over push-all ] each
+ [ append! ] each
] if-empty swap like ;
: concat ( seq -- newseq )
! Selective Binding
: delayed-bind-with ( vars quot -- quot' ) '[ _ dup [ get ] map zip >hashtable [ _ bind ] curry ] ;
-SYNTAX: C[ | parse-until parse-quotation delayed-bind-with over push-all ;
+SYNTAX: C[ | parse-until parse-quotation delayed-bind-with append! ;
! Common ones
-SYNTAX: DIR[ parse-quotation { current-directory } swap delayed-bind-with over push-all ;
+SYNTAX: DIR[ parse-quotation { current-directory } swap delayed-bind-with append! ;
! Namespace Binding
: bind-to-namespace ( quot -- quot' ) '[ namespace [ _ bind ] curry ] ;
-SYNTAX: NS[ parse-quotation bind-to-namespace over push-all ;
\ No newline at end of file
+SYNTAX: NS[ parse-quotation bind-to-namespace append! ;
[ [ italic = ] find nip [ >>italic? ] install ]
[ [ bold = ] find nip [ >>bold? ] install ]
[ [ fontname? ] find nip [ >>name* ] install ]
-} cleave 4array concat '[ dup font>> @ drop ] over push-all ;
+} cleave 4array concat '[ dup font>> @ drop ] append! ;
[ unclip-last [ [ spin 1array glue ] reduce-r ] 2curry ]
[ length 1 - 1 <effect> [ call-effect ] 2curry ] bi ;
-SYNTAX: i" parse-string rest "_" str-fry over push-all ;
-SYNTAX: i{ \ } parse-until >array { _ } gen-fry over push-all ;
-SYNTAX: iV{ \ } parse-until >vector V{ _ } gen-fry over push-all ;
+SYNTAX: i" parse-string rest "_" str-fry append! ;
+SYNTAX: i{ \ } parse-until >array { _ } gen-fry append! ;
+SYNTAX: iV{ \ } parse-until >vector V{ _ } gen-fry append! ;
[
numbers {
{ [ dup length 5 = ] [ <bunny-vertex> pick push ] }
- { [ dup first 3 = ] [ rest over push-all ] }
+ { [ dup first 3 = ] [ rest append! ] }
[ drop ]
} cond
] each-line-tokens ; inline
SYNTAX: [infix|
"|" parse-bindings "infix]" parse-infix-locals <let>
- ?rewrite-closures over push-all ;
+ ?rewrite-closures append! ;
! --------
: euler017 ( -- answer )
- 1000 [1,b] SBUF" " clone [ number>text over push-all ] reduce [ Letter? ] count ;
+ 1000 [1,b] SBUF" " clone [ number>text append! ] reduce [ Letter? ] count ;
! [ euler017 ] 100 ave-time
! 15 ms ave run time - 1.71 SD (100 trials)
pick length 8 > [
2drop 10 digits>integer
] [
- [ * number>digits over push-all ] 2keep 1 + (concat-product)
+ [ * number>digits append! ] 2keep 1 + (concat-product)
] if ;
: concat-product ( n -- m )
: (concat-upto) ( n limit str -- str )
2dup length > [
- pick number>string over push-all rot 1 + -rot (concat-upto)
+ pick number>string append! [ 1 + ] 2dip (concat-upto)
] [
2nip
] if ;
: <slider> ( init page min max step -- slider ) <range> horizontal slider:<slider> ;
: image-prep ( -- image ) scan current-vocab name>> "vocab:" "/icons/" surround ".tiff" surround <image-name> dup cached-image drop ;
-SYNTAX: IMG-MODEL-BTN: image-prep [ <model-btn> ] curry over push-all ;
+SYNTAX: IMG-MODEL-BTN: image-prep [ <model-btn> ] curry append! ;
-SYNTAX: IMG-BTN: image-prep [ swap <button> ] curry over push-all ;
+SYNTAX: IMG-BTN: image-prep [ swap <button> ] curry append! ;
GENERIC: output-model ( gadget -- model )
M: gadget output-model model>> ;
INSTANCE: gadget monad
M: gadget monad-of drop gadget-monad ;
M: gadget-monad return drop <gadget> swap >>model ;
-M: gadget >>= output-model [ swap call( x -- y ) ] curry ;
\ No newline at end of file
+M: gadget >>= output-model [ swap call( x -- y ) ] curry ;
: insertion-quot ( quot -- quot' ) make:building get [ [ placeholder? ] find-last nip [ <placeholder> dup , ] unless*
templates get spin '[ [ _ templates set _ , @ ] with-interface ] ] when* ;
-SYNTAX: ,% scan string>number [ <layout> , ] curry over push-all ;
-SYNTAX: ->% scan string>number '[ [ _ <layout> , ] [ output-model ] bi ] over push-all ;
+SYNTAX: ,% scan string>number [ <layout> , ] curry append! ;
+SYNTAX: ->% scan string>number '[ [ _ <layout> , ] [ output-model ] bi ] append! ;
GENERIC: -> ( uiitem -- model )
M: gadget -> dup , output-model ;
ERROR: not-in-template word ;
SYNTAX: $ CREATE-WORD dup
[ [ dup templates get at [ nip , ] [ not-in-template ] if* ] curry (( -- )) define-declared "$" expect ]
- [ [ <placeholder> [ swap templates get set-at ] keep , ] curry ] bi over push-all ;
+ [ [ <placeholder> [ swap templates get set-at ] keep , ] curry ] bi append! ;
: insert-gadget ( number parent gadget -- ) -rot [ but-last insert-nth ] change-children drop ;
: insert-size ( number parent size -- ) -rot [ but-last insert-nth ] change-sizes drop ;
M: model >>= [ swap insertion-quot <action> ] curry ;
M: model fmap insertion-quot <mapped> ;
M: model $> insertion-quot side-effect-model new-mapped-model ;
-M: model <$ insertion-quot quot-model new-mapped-model ;
\ No newline at end of file
+M: model <$ insertion-quot quot-model new-mapped-model ;