more inference cleanups
parent
4b20f07b0f
commit
2057449bbc
|
@ -103,12 +103,9 @@ namespaces prettyprint sequences strings unparser vectors words ;
|
|||
#ifte pop-d drop infer-branches
|
||||
] "infer" set-word-prop
|
||||
|
||||
: vtable-value ( rstate vtable -- seq )
|
||||
[ swap <literal> ] map-with ;
|
||||
|
||||
USE: kernel-internals
|
||||
|
||||
\ dispatch [
|
||||
pop-literal vtable-value
|
||||
pop-literal nip [ <literal> ] map
|
||||
#dispatch pop-d drop infer-branches
|
||||
] "infer" set-word-prop
|
||||
|
|
|
@ -66,7 +66,7 @@ GENERIC: apply-object
|
|||
: apply-literal ( obj -- )
|
||||
#! Literals are annotated with the current recursive
|
||||
#! state.
|
||||
recursive-state get <literal> push-d 1 #push node, ;
|
||||
<literal> push-d 1 #push node, ;
|
||||
|
||||
M: object apply-object apply-literal ;
|
||||
|
||||
|
|
|
@ -5,21 +5,20 @@ USING: generic kernel lists namespaces sequences unparser words ;
|
|||
|
||||
TUPLE: value recursion safe? ;
|
||||
|
||||
C: value ( recursion -- value )
|
||||
[ t swap set-value-safe? ] keep
|
||||
[ set-value-recursion ] keep ;
|
||||
C: value ( rstate -- value )
|
||||
t over set-value-safe?
|
||||
recursive-state get over set-value-recursion ;
|
||||
|
||||
M: value = eq? ;
|
||||
|
||||
TUPLE: computed ;
|
||||
|
||||
C: computed ( -- value )
|
||||
recursive-state get <value> over set-delegate ;
|
||||
C: computed ( -- value ) <value> over set-delegate ;
|
||||
|
||||
TUPLE: literal value ;
|
||||
|
||||
C: literal ( obj rstate -- value )
|
||||
[ >r <value> r> set-delegate ] keep
|
||||
C: literal ( obj -- value )
|
||||
<value> over set-delegate
|
||||
[ set-literal-value ] keep ;
|
||||
|
||||
M: value literal-value ( value -- )
|
||||
|
@ -34,7 +33,7 @@ M: value literal-value ( value -- )
|
|||
TUPLE: meet values ;
|
||||
|
||||
C: meet ( values -- value )
|
||||
[ set-meet-values ] keep f <value> over set-delegate ;
|
||||
<value> over set-delegate [ set-meet-values ] keep ;
|
||||
|
||||
PREDICATE: tuple safe-literal ( obj -- ? )
|
||||
dup literal? [ value-safe? ] [ drop f ] ifte ;
|
||||
|
|
|
@ -23,7 +23,7 @@ USE: sequences
|
|||
[ [ [ 1 ] [ 2 ] ] ] [ [ [ 1 ] [ 2 ] ifte ] kill-set* ] unit-test
|
||||
|
||||
[ [ t t f ] ] [
|
||||
[ 1 2 3 ] [ f <literal> ] map
|
||||
[ 1 2 3 ] [ <literal> ] map
|
||||
[ [ literal-value 2 <= ] subset ] keep in-d-node <#drop> kill-mask
|
||||
] unit-test
|
||||
|
||||
|
|
Loading…
Reference in New Issue