combinators.smart: Fix infer-known; should be 100% now.
It's stack-checker bugs all the way down.db4
parent
c1a49e69c8
commit
cde3c043bf
|
@ -82,3 +82,7 @@ IN: combinators.smart.tests
|
||||||
:: map-reduce-test ( a b c -- d ) [ a b c ] [ a - ] [ b * + ] map-reduce-outputs ;
|
:: map-reduce-test ( a b c -- d ) [ a b c ] [ a - ] [ b * + ] map-reduce-outputs ;
|
||||||
|
|
||||||
[ ] [ 1 2 3 map-reduce-test ] unit-test
|
[ ] [ 1 2 3 map-reduce-test ] unit-test
|
||||||
|
|
||||||
|
[ ( x x -- x ) ] [ [ curry inputs ] infer ] unit-test
|
||||||
|
|
||||||
|
[ ( x -- x ) ] [ [ [ curry ] curry inputs ] infer ] unit-test
|
||||||
|
|
|
@ -30,19 +30,22 @@ GENERIC: infer-known* ( known -- effect )
|
||||||
] if*
|
] if*
|
||||||
] "special" set-word-prop
|
] "special" set-word-prop
|
||||||
|
|
||||||
! TODO: Handle the case where a nested call to infer-known returns f
|
|
||||||
|
|
||||||
M: curried infer-known*
|
M: curried infer-known*
|
||||||
quot>> infer-known curry-effect ;
|
quot>> infer-known dup [
|
||||||
|
curry-effect
|
||||||
|
] [
|
||||||
|
drop f
|
||||||
|
] if ;
|
||||||
|
|
||||||
M: composed infer-known*
|
M: composed infer-known*
|
||||||
[ quot1>> ] [ quot2>> ] bi
|
[ quot1>> ] [ quot2>> ] bi
|
||||||
[ infer-known ] bi@ compose-effects ;
|
[ infer-known ] bi@
|
||||||
|
2dup and [ compose-effects ] [ 2drop f ] if ;
|
||||||
|
|
||||||
M: declared-effect infer-known*
|
M: declared-effect infer-known*
|
||||||
known>> infer-known* ;
|
known>> infer-known* ;
|
||||||
|
|
||||||
M: input-parameter infer-known* \ inputs/outputs unknown-macro-input ;
|
M: input-parameter infer-known* drop f ;
|
||||||
|
|
||||||
M: object infer-known* drop f ;
|
M: object infer-known* drop f ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue