! Copyright (C) 2008, 2009 Slava Pestov.\r
! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors models kernel sequences ;\r
+USING: accessors kernel models sequences ;\r
IN: models.arrow\r
\r
TUPLE: arrow < model quot ;\r
: <arrow> ( model quot -- arrow )\r
f arrow new-model\r
swap >>quot\r
- [ add-dependency ] keep ;\r
+ [ add-dependency ] keep ;\r
\r
M: arrow model-changed\r
- [ [ value>> ] [ quot>> ] bi* call( old -- new ) ] [ nip ] 2bi\r
- set-model ;\r
+ [ [ value>> ] [ quot>> ] bi* call( old -- new ) ]\r
+ [ set-model ] bi ;\r
\r
M: arrow model-activated\r
[ dependencies>> ] keep [ model-changed ] curry each ;\r
! Copyright (C) 2008 Slava Pestov.\r
! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors models kernel sequences ;\r
+USING: accessors kernel models sequences ;\r
IN: models.product\r
\r
TUPLE: product < model ;\r
M: product model-activated dup model-changed ;\r
\r
M: product update-model\r
- dup value>> swap [ set-model ] set-product-value ;\r
+ [ value>> ] keep [ set-model ] set-product-value ;\r
\r
M: product range-value\r
[ range-value ] product-value ;\r
! Copyright (C) 2008 Slava Pestov.\r
! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors kernel models sequences ;\r
+USING: accessors kernel locals models sequences ;\r
IN: models.history\r
\r
TUPLE: history < model back forward ;\r
reset-history ;\r
\r
: (add-history) ( history to -- )\r
- swap value>> dup [ swap push ] [ 2drop ] if ;\r
+ swap value>> [ swap push ] [ drop ] if* ;\r
\r
-: go-back/forward ( history to from -- )\r
- [ 2drop ]\r
- [ [ dupd (add-history) ] dip pop swap set-model ] if-empty ;\r
+:: go-back/forward ( history to from -- )\r
+ from empty? [\r
+ history to (add-history)\r
+ from pop history set-model\r
+ ] unless ;\r
\r
: go-back ( history -- )\r
dup [ forward>> ] [ back>> ] bi go-back/forward ;\r
-USING: accessors models models.arrow inverse kernel ;
+USING: accessors inverse kernel models models.arrow ;
IN: models.illusion
TUPLE: illusion < arrow ;
: <illusion> ( model quot -- illusion )
- illusion new V{ } clone >>connections V{ } clone >>dependencies 0 >>ref
- swap >>quot over >>model [ add-dependency ] keep ;
+ f illusion new-model
+ swap >>quot
+ over >>model
+ [ add-dependency ] keep ;
-: <activated-illusion> ( model quot -- illusion ) <illusion> dup activate-model ;
+: <activated-illusion> ( model quot -- illusion )
+ <illusion> dup activate-model ;
: backtalk ( value object -- )
[ quot>> [undo] call( a -- b ) ] [ model>> ] bi set-model ;
-M: illusion update-model ( model -- ) [ [ value>> ] keep backtalk ] with-locked-model ;
\ No newline at end of file
+M: illusion update-model ( model -- )
+ [ [ value>> ] keep backtalk ] with-locked-model ;