GENERIC: lookup-c-type ( name -- c-type ) foldable
PREDICATE: c-type-word < word
- "c-type" word-prop ;
+ "c-type" word-prop >boolean ;
TUPLE: pointer { to initial: void read-only } ;
C: <pointer> pointer
[ def>> third ] [ name>> ] bi = ;
PREDICATE: alien-callback-type-word < typedef-word
- "callback-effect" word-prop ;
+ "callback-effect" word-prop >boolean ;
: global-quot ( type word -- quot )
swap [ name>> current-library get ] dip
[ class>> swap first create-method dup fake-definition ] keep
[ drop ] [ "consultation" set-word-prop ] 2bi ;
-PREDICATE: consult-method < method "consultation" word-prop ;
+PREDICATE: consult-method < method
+ "consultation" word-prop >boolean ;
M: consult-method reset-word
[ call-next-method ] [ f "consultation" set-word-prop ] bi ;
: undo-literal ( object -- quot ) [ =/fail ] curry ;
-PREDICATE: normal-inverse < word "inverse" word-prop ;
-PREDICATE: math-inverse < word "math-inverse" word-prop ;
-PREDICATE: pop-inverse < word "pop-length" word-prop ;
+PREDICATE: normal-inverse < word "inverse" word-prop >boolean ;
+PREDICATE: math-inverse < word "math-inverse" word-prop >boolean ;
+PREDICATE: pop-inverse < word "pop-length" word-prop >boolean ;
UNION: explicit-inverse normal-inverse math-inverse pop-inverse ;
: enough? ( stack word -- ? )
SYNTAX: IDENTITY-MEMO: (:) define-identity-memoized ;
-PREDICATE: memoized < word "memoize" word-prop ;
+PREDICATE: memoized < word "memoize" word-prop >boolean ;
M: memoized definer drop \ MEMO: \ ; ;
words summary make accessors classes prettyprint ;
IN: typed.prettyprint
-PREDICATE: typed-lambda-word < lambda-word "typed-word" word-prop ;
+PREDICATE: typed-lambda-word < lambda-word
+ "typed-word" word-prop >boolean ;
M: typed-word definer drop \ TYPED: \ ; ;
M: typed-lambda-word definer drop \ TYPED:: \ ; ;
SYNTAX: DESCRIPTIVE: (:) define-descriptive ;
PREDICATE: descriptive < word
- "descriptive-definition" word-prop ;
+ "descriptive-definition" word-prop >boolean ;
M: descriptive definer drop \ DESCRIPTIVE: \ ; ;
IN: variables
PREDICATE: variable < word
- "variable-setter" word-prop ;
+ "variable-setter" word-prop >boolean ;
GENERIC: variable-setter ( word -- word' )
dup [ [variable-getter] ] [ [variable-setter] ] bi (define-variable) ;
SYNTAX: VAR:
- scan-new-word define-variable ;
+ scan-new-word define-variable ;
M: variable definer drop \ VAR: f ;
M: variable definition drop f ;
M: variable print-stack-effect? drop f ;
PREDICATE: typed-variable < variable
- "variable-type" word-prop ;
+ "variable-type" word-prop >boolean ;
: [typed-getter] ( quot type -- quot )
1array '[ @ _ declare ] ;
parser quotations sequences slots splitting words ;
IN: variants
-PREDICATE: variant-class < mixin-class "variant" word-prop ;
+PREDICATE: variant-class < mixin-class "variant?" word-prop ;
M: variant-class initial-value*
dup members [ drop f f ]
dup array? [ first3 pick [ define-tuple-class-and-boa-word ] dip ] [ dup define-singleton-class ] if ;
: define-variant-class ( class -- )
- [ define-mixin-class ] [ t "variant" set-word-prop ] bi ;
+ [ define-mixin-class ] [ t "variant?" set-word-prop ] bi ;
: define-variant-class-member ( class member -- )
define-variant-member swap add-mixin-instance ;