Yep, you can also use the syntax for it: << { "foo "bar" "baz" } [ create-word-in define-symbol ] each >>
On Tue, Sep 17, 2019 at 7:13 AM KUSUMOTO Norio <kusum...@na.rim.or.jp> wrote: > > How do I code to generate symbols at runtime? "define-symbol" seems to > work > > only at compile time. > > Oh, I was able to do it as follows: > > [ "a-symbol" "factor-logica" create-word define-symbol ] > with-compilation-unit > > > -- > KUSUMOTO Norio > > > > > 2019/09/17 19:40、KUSUMOTO Norio <kusum...@na.rim.or.jp>のメール: > > > > Hello all, > > > > > > How do I code to generate symbols at runtime? "define-symbol" seems to > work > > only at compile time. > > > > I'm writing an embedded language that runs on Factor with the > capabilities of > > a subset of Prolog. To achieve the anonymous variable functionality, I > want to > > generate as many symbols as needed at runtime. > > > > In the following code, the Prolog anonymous variables '_' are equivalent > > to explicitly generated N1 to N11 logical variables. I want to automate > > that operation. > > > > > > USING: actor-logica factor-logica.built-in lists ; > > > > ! Do the same as this Prolog program > > ! > > ! neighbor(L,R,[L,R|_]). > > ! neighbor(L,R,[_|Xs]) :- neighbor(L,R,Xs). > > ! > > ! zebra(X) :- Street = [H1,H2,H3], > > ! member(house(red,english,_), Street), > > ! member(house(_,spanish,dog), Street), > > ! neighbor(house(_,_,cat), house(_,japanese,_), Street), > > ! neighbor(house(_,_,cat), house(blue,_,_), Street), > > ! member(house(_,X,zebra),Street). > > > > LOGIC-PREDS: neighboro zebrao ; > > LOGIC-VARS: L R X Xs H1 H2 H3 Street ; > > LOGIC-VARS: N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 ; > > SYMBOLS: red blue ; > > SYMBOLS: english spanish japanese ; > > SYMBOLS: dog cat zebra ; > > TUPLE: house color nationality pet ; > > > > { neighboro L R [ L R N1 cons cons ] } semper > > { neighboro L R [ N1 Xs cons ] } { neighboro L R Xs } si > > > > { zebrao X } { > > { (=) Street [ { H1 H2 H3 } >list ] } > > { membero [ T{ house f red english N1 } ] Street } > > { membero [ T{ house f N2 spanish dog } ] Street } > > { neighboro [ T{ house f N3 N4 cat } ] [ T{ house f N5 japanese N6 } > ] Street } > > { neighboro [ T{ house f N7 N8 cat } ] [ T{ house f blue N9 N10 } ] > Street } > > { membero [ T{ house f N11 X zebra } ] Street } > > } si > > > > > > Loading resource:work/factor-logica/factor-logica.factor > > Loading resource:work/factor-logica/built-in/built-in.factor > > IN: scratchpad { zebrao X } query . > > { H{ { X japanese } } H{ { X japanese } } } > > > > > > -- > > KUSUMOTO Norio > > > > > > > > > > > > _______________________________________________ > > Factor-talk mailing list > > Factor-talk@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/factor-talk > > > > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk >
_______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk