Fix descriptive with intersection classes
parent
640f9643ef
commit
8a4ef17039
|
@ -4,13 +4,13 @@ IN: descriptive.tests
|
|||
DESCRIPTIVE: divide ( num denom -- fraction ) / ;
|
||||
|
||||
[ 3 ] [ 9 3 divide ] unit-test
|
||||
[ T{ descriptive f { { "num" 3 } { "denom" 0 } } "Division by zero" divide } ] [ [ 3 0 divide ] [ ] recover ] unit-test
|
||||
[ T{ descriptive-error f { { "num" 3 } { "denom" 0 } } "Division by zero" divide } ] [ [ 3 0 divide ] [ ] recover ] unit-test
|
||||
|
||||
[ "USING: descriptive math ;\nIN: descriptive.tests\nDESCRIPTIVE: divide ( num denom -- fraction ) / ;\n" ] [ \ divide [ see ] with-string-writer ] unit-test
|
||||
|
||||
DESCRIPTIVE:: divide* ( num denom -- fraction ) num denom / ;
|
||||
|
||||
[ 3 ] [ 9 3 divide* ] unit-test
|
||||
[ T{ descriptive f { { "num" 3 } { "denom" 0 } } "Division by zero" divide* } ] [ [ 3 0 divide* ] [ ] recover ] unit-test
|
||||
[ T{ descriptive-error f { { "num" 3 } { "denom" 0 } } "Division by zero" divide* } ] [ [ 3 0 divide* ] [ ] recover ] unit-test
|
||||
|
||||
[ "USING: descriptive math ;\nIN: descriptive.tests\nDESCRIPTIVE:: divide* ( num denom -- fraction ) num denom / ;\n" ] [ \ divide* [ see ] with-string-writer ] unit-test
|
||||
|
|
|
@ -3,16 +3,16 @@ locals.private accessors parser namespaces continuations
|
|||
inspector definitions arrays.lib arrays ;
|
||||
IN: descriptive
|
||||
|
||||
ERROR: descriptive args underlying word ;
|
||||
ERROR: descriptive-error args underlying word ;
|
||||
|
||||
M: descriptive summary
|
||||
M: descriptive-error summary
|
||||
word>> "The " swap word-name " word encountered an error."
|
||||
3append ;
|
||||
|
||||
<PRIVATE
|
||||
: rethrower ( word inputs -- quot )
|
||||
[ length ] keep [ >r narray r> swap 2array flip ] 2curry
|
||||
[ 2 ndip descriptive ] 2curry ;
|
||||
[ 2 ndip descriptive-error ] 2curry ;
|
||||
|
||||
: [descriptive] ( word def -- newdef )
|
||||
swap dup "declared-effect" word-prop in>> rethrower
|
||||
|
@ -26,19 +26,18 @@ PRIVATE>
|
|||
: DESCRIPTIVE:
|
||||
(:) define-descriptive ; parsing
|
||||
|
||||
PREDICATE: descriptive-def < word
|
||||
PREDICATE: descriptive < word
|
||||
"descriptive-definition" word-prop ;
|
||||
|
||||
M: descriptive-def definer drop \ DESCRIPTIVE: \ ; ;
|
||||
M: descriptive definer drop \ DESCRIPTIVE: \ ; ;
|
||||
|
||||
M: descriptive-def definition
|
||||
M: descriptive definition
|
||||
"descriptive-definition" word-prop ;
|
||||
|
||||
: DESCRIPTIVE::
|
||||
(::) define-descriptive ; parsing
|
||||
|
||||
PREDICATE: descriptive-lambda < lambda-word
|
||||
"descriptive-definition" word-prop ;
|
||||
INTERSECTION: descriptive-lambda descriptive lambda-word ;
|
||||
|
||||
M: descriptive-lambda definer drop \ DESCRIPTIVE:: \ ; ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue