SYNTAX: CONSTRUCTOR:
scan-word [ name>> "<" ">" surround create-in ] keep
- "(" expect ")" parse-effect
+ complete-effect
parse-definition
define-constructor ;
\ No newline at end of file
parse-definition >fake-quotations parsed \ fake-quotations> parsed ;
: parse-declared* ( accum -- accum )
- "(" expect ")" parse-effect
+ complete-effect
[ parse-definition* ] dip
parsed ;
SYNTAX: `C:
scan-param parsed
scan-param parsed
- "(" expect ")" parse-effect
+ complete-effect
[ [ [ boa ] curry ] over push-all ] dip parsed
\ define-declared* parsed ;
(parse-lambda) <wlet> ?rewrite-closures ;
: parse-locals ( -- effect vars assoc )
- "(" expect ")" parse-effect
+ complete-effect
dup
in>> [ dup pair? [ first ] when ] map make-locals ;
parse-effect-tokens { "--" } split1 dup
[ <effect> ] [ "Stack effect declaration must contain --" throw ] if ;
+: complete-effect ( -- effect )
+ "(" expect ")" parse-effect ;
+
: parse-call( ( accum word -- accum )
[ ")" parse-effect ] dip 2array over push-all ;
\ No newline at end of file
: (:) ( -- word def effect )
CREATE-WORD
- "(" expect ")" parse-effect
+ complete-effect
parse-definition swap ;
ERROR: bad-number ;