Some small simplifications using ``counter`` and ``slots>tuple``: ``` SYMBOL: *anonymouse-var-no* 0 *anonymouse-var-no* set-global
: reset-anonymouse-var-no ( -- ) 0 *anonymouse-var-no* set-global ; : generate-anonymouse-var ( -- var-symbol ) [ *anonymouse-var-no* counter "ANONYMOUSE-VAR-#%d_" sprintf "factor-logica" create-word dup define-symbol LOGIC-VAR over set-global ] with-compilation-unit ; : replace-anonymouse-vars ( before -- after ) { { [ dup _ = ] [ drop generate-anonymouse-var ] } { [ dup sequence? ] [ [ replace-anonymouse-vars ] map ] } { [ dup tuple? ] [ [ tuple-slots [ replace-anonymouse-vars ] map ] [ class-of slots>tuple ] bi ] } [ ] } cond ; ``` On Wed, Sep 18, 2019 at 3:21 PM KUSUMOTO Norio <kusum...@na.rim.or.jp> wrote: > > Yep, you can also use the syntax for it: > > > > << { "foo "bar" "baz" } [ create-word-in define-symbol ] each >> > > > > Thank you. > My program needs to make a symbol every time it finds '_'. > It became as follows: > > SYMBOL: *anonymouse-var-no* 0 *anonymouse-var-no* set-global > > : reset-anonymouse-var-no ( -- ) 0 *anonymouse-var-no* set-global ; > > : inc-anonymouse-var-no ( -- ) > *anonymouse-var-no* get-global 1 + *anonymouse-var-no* set-global ; > > : generate-anonymouse-var ( -- var-symbol ) > [ > inc-anonymouse-var-no > *anonymouse-var-no* get-global "ANONYMOUSE-VAR-#%d_" sprintf > "factor-logica" create-word dup dup > define-symbol > LOGIC-VAR swap set-global > ] with-compilation-unit ; > > : replace-anonymouse-vars ( before -- after ) > { > { [ dup _ = ] [ drop generate-anonymouse-var ] } > { [ dup sequence? ] [ [ replace-anonymouse-vars ] map ] } > { [ dup tuple? ] [ > [ class-of 1array ] [ tuple-slots ] bi > [ replace-anonymouse-vars ] map append >tuple ] } > [ ] > } cond ; > > -- > 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