     dup
     [ word? ] [ symbol? not ] bi and
     [ missing-literal ] when ;
+
 \ + [ - ] [ - ] define-math-inverse
 \ - [ + ] [ - ] define-math-inverse
 \ * [ / ] [ / ] define-math-inverse


: both ( object object -- object )
    dupd assert= ;
\ both [ dup ] define-inverse

{

ERROR: bad-math-inverse ;

: next ( revquot -- revquot* first )
    [ bad-math-inverse ] [ unclip-slice ] if-empty ;

: constant-word? ( word -- ? )
    stack-effect [ out>> length 1 = ] [ in>> empty? ] bi and ;

: assure-constant ( constant -- quot )
    dup word? [ bad-math-inverse ] when 1quotation ;
