tweak declared-effect to wrap the existing known instead of introducing a new value, so we don't confuse the compiler

db4
Joe Groff 2010-03-07 18:07:42 -08:00
parent b14d59030f
commit 6b9a79159d
5 changed files with 13 additions and 15 deletions

View File

@ -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? [

View File

@ -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) ;

View File

@ -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 ;

View File

@ -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 -- )

View File

@ -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 ;