]> gitweb.factorcode.org Git - factor.git/blob - basis/constructors/constructors.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / constructors / constructors.factor
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 ;
5 IN: constructors
6
7 ! An experiment
8
9 MACRO: set-slots ( slots -- quot )
10     <reversed> [ setter-word '[ swap _ execute ] ] map [ ] join ;
11
12 : construct ( ... class slots -- instance )
13     [ new ] dip set-slots ; inline
14
15 : define-constructor ( name class effect body -- )
16     [ [ in>> '[ _ _ construct ] ] dip compose ] [ drop ] 2bi
17     define-declared ;
18
19 SYNTAX: CONSTRUCTOR:
20     scan-word [ name>> "<" ">" surround create-in ] keep
21     complete-effect
22     parse-definition
23     define-constructor ;