1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: slots kernel sequences fry accessors parser lexer words
4 effects.parser macros ;
9 MACRO: set-slots ( slots -- quot )
10 <reversed> [ setter-word '[ swap _ execute ] ] map [ ] join ;
12 : construct ( ... class slots -- instance )
13 [ new ] dip set-slots ; inline
15 : define-constructor ( name class effect body -- )
16 [ [ in>> '[ _ _ construct ] ] dip compose ] [ drop ] 2bi
20 scan-word [ name>> "<" ">" surround create-in ] keep
21 "(" expect ")" parse-effect
23 define-constructor ; parsing