tweak declared-effect to wrap the existing known instead of introducing a new value, so we don't confuse the compiler
parent
b14d59030f
commit
6b9a79159d
|
@ -92,7 +92,7 @@ M: literal infer-branch
|
|||
] H{ } make-assoc ;
|
||||
|
||||
M: declared-effect infer-branch
|
||||
value>> infer-branch ;
|
||||
known>> infer-branch ;
|
||||
|
||||
M: callable infer-branch
|
||||
[
|
||||
|
@ -114,7 +114,7 @@ GENERIC: curried/composed? ( known -- ? )
|
|||
M: object curried/composed? drop f ;
|
||||
M: curried curried/composed? drop t ;
|
||||
M: composed curried/composed? drop t ;
|
||||
M: declared-effect curried/composed? value>> known curried/composed? ;
|
||||
M: declared-effect curried/composed? known>> curried/composed? ;
|
||||
|
||||
: infer-if ( -- )
|
||||
2 literals-available? [
|
||||
|
|
|
@ -121,7 +121,7 @@ SYMBOL: enter-out
|
|||
|
||||
GENERIC: (undeclared-known) ( value -- known )
|
||||
M: object (undeclared-known) ;
|
||||
M: declared-effect (undeclared-known) value>> known (undeclared-known) ;
|
||||
M: declared-effect (undeclared-known) known>> (undeclared-known) ;
|
||||
|
||||
: undeclared-known ( value -- known ) known (undeclared-known) ;
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ M: composed infer-call*
|
|||
! current-effect P. ] bi ;
|
||||
|
||||
M: declared-effect infer-call*
|
||||
[ nip dup value>> (infer-call) ] with-effect-here check-declared-effect ;
|
||||
[ [ known>> infer-call* ] keep ] with-effect-here check-declared-effect ;
|
||||
|
||||
M: input-parameter infer-call* \ call unknown-macro-input ;
|
||||
M: object infer-call* \ call bad-macro-input ;
|
||||
|
|
|
@ -17,12 +17,10 @@ IN: stack-checker.row-polymorphism
|
|||
meta-d length :> d-length
|
||||
n d-length < [
|
||||
d-length 1 - n - :> n'
|
||||
n' meta-d [| value |
|
||||
value word effect variables <declared-effect> :> known'
|
||||
<value> :> value'
|
||||
known' value' set-known
|
||||
value'
|
||||
] change-nth
|
||||
n' meta-d nth :> value
|
||||
value known :> known
|
||||
known word effect variables <declared-effect> :> known'
|
||||
known' value set-known
|
||||
] [ word unknown-macro-input ] if ;
|
||||
|
||||
:: declare-input-effects ( word -- )
|
||||
|
|
|
@ -100,15 +100,15 @@ M: input-parameter (literal) current-word get unknown-macro-input ;
|
|||
|
||||
! Argument corresponding to polymorphic declared input of inline combinator
|
||||
|
||||
TUPLE: declared-effect value word effect variables ;
|
||||
TUPLE: declared-effect known word effect variables ;
|
||||
|
||||
C: <declared-effect> declared-effect
|
||||
|
||||
M: declared-effect (input-value?) value>> input-value? ;
|
||||
M: declared-effect (input-value?) known>> (input-value?) ;
|
||||
|
||||
M: declared-effect (literal-value?) value>> literal-value? ;
|
||||
M: declared-effect (literal-value?) known>> (literal-value?) ;
|
||||
|
||||
M: declared-effect (literal) value>> literal ;
|
||||
M: declared-effect (literal) known>> (literal) ;
|
||||
|
||||
! Computed values
|
||||
M: f (input-value?) drop f ;
|
||||
|
@ -134,5 +134,5 @@ M: curried known>callable
|
|||
[ quot>> known known>callable ] [ obj>> known known>callable ] bi
|
||||
prefix ;
|
||||
M: declared-effect known>callable
|
||||
value>> known known>callable ;
|
||||
known>> known>callable ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue