From 5388945ef0d58faeffee7c429673f3fb9554a750 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 28 Oct 2008 16:18:47 -0700 Subject: [PATCH] Tweak --- extra/slides/lib.factor | 52 ++++++++++++++++++++++++++++++++++++++ extra/slides/slides.factor | 4 +-- 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100755 extra/slides/lib.factor diff --git a/extra/slides/lib.factor b/extra/slides/lib.factor new file mode 100755 index 0000000000..f9708b3ca7 --- /dev/null +++ b/extra/slides/lib.factor @@ -0,0 +1,52 @@ +USING: arrays assocs kernel vectors sequences namespaces + random math.parser math fry ; + +IN: assocs.lib + +: set-assoc-stack ( value key seq -- ) + dupd [ key? ] with find-last nip set-at ; + +: at-default ( key assoc -- value/key ) + dupd at [ nip ] when* ; + +: replace-at ( assoc value key -- assoc ) + >r >r dup r> 1vector r> rot set-at ; + +: peek-at* ( assoc key -- obj ? ) + swap at* dup [ >r peek r> ] when ; + +: peek-at ( assoc key -- obj ) + peek-at* drop ; + +: >multi-assoc ( assoc -- new-assoc ) + [ 1vector ] assoc-map ; + +: multi-assoc-each ( assoc quot -- ) + [ with each ] curry assoc-each ; inline + +: insert ( value variable -- ) namespace push-at ; + +: generate-key ( assoc -- str ) + >r 32 random-bits >hex r> + 2dup key? [ nip generate-key ] [ drop ] if ; + +: set-at-unique ( value assoc -- key ) + dup generate-key [ swap set-at ] keep ; + +: histogram ( assoc quot -- assoc' ) + H{ } clone [ + swap [ change-at ] 2curry assoc-each + ] keep ; inline + +: inc-at ( key assoc -- ) + [ 0 or 1 + ] change-at ; + +: ?at ( obj assoc -- value/obj ? ) + dupd at* [ [ nip ] [ drop ] if ] keep ; + +: if-at ( obj assoc quot1 quot2 -- ) + [ ?at ] 2dip if ; inline + +: when-at ( obj assoc quot -- ) [ ] if-at ; inline + +: unless-at ( obj assoc quot -- ) [ ] swap if-at ; inline diff --git a/extra/slides/slides.factor b/extra/slides/slides.factor index a3031a7557..2940bcbfcb 100755 --- a/extra/slides/slides.factor +++ b/extra/slides/slides.factor @@ -16,7 +16,7 @@ IN: slides } { default-block-style H{ - { wrap-margin 1000 } + { wrap-margin 1100 } } } { code-style @@ -34,7 +34,7 @@ IN: slides } } { table-content-style - H{ { wrap-margin 800 } } + H{ { wrap-margin 1000 } } } { list-style H{ { table-gap { 10 20 } } }