Quotations are just squeneces -- That's the key point that I not got yet...

So, if I wante to put quotation inside a sequence, I would use:

IN: scratchpad { 1 2 } [ 3 ] 1quotation append .
{ 1 2 [ 3 ] }

test passed.

Thanks.

kuo


? 2014/12/17 ??8:55, John Benediktsson ??:
You can see what code is generated for both approaches:

SYNTAX: FOO: scan-token '[ _ foo set ] append! ;

    IN: scratchpad [ FOO: hello ] .
    [ "hello" foo set ]

SYNTAX: FOO1: scan-token '[ _ foo set ] suffix! \ call suffix! ;

    IN: scratchpad [ FOO1: hello ] .
    [ [ "hello" foo set ] call ]

The first is simpler, although the results should be the same as your version.

And quotations are just sequences, see this:

    IN: scratchpad [ 1 2 3 ] first .
    1

    IN: scratchpad [ 1 2 ] { 3 } append .
    [ 1 2 3 ]

    IN: scratchpad { 1 2 } [ 3 ] append .
    { 1 2 3 }

Knowing that, you could also do this, which looks a little weird but works:

SYNTAX: FOO2: scan-token suffix! { foo set } append! ;

    IN: scratchpad [ FOO2: hello ] .
    [ "hello" foo set ]



On Tue, Dec 16, 2014 at 4:17 PM, tgkuo <tgk...@gmail.com <mailto:tgk...@gmail.com>> wrote:

    Hi,

    About the parsing using append! as below

    > SYNTAX: FOO: scan-token '[ _ foo set ] append! ;

    seemed to have the same effect as this one, which is more
    understandable

    SYNTAX: FOO1: scan-token '[ _ foo set ] suffix! \ call suffix! ;

    As I knew, append! has the stack effect of ( seq seq -- seq ) but
    the quotation is not a kind of seq, how this works?


    BR

    kuo





    ? 2014/12/17 ??1:00, John Benediktsson ??:
    If you want your code to work the way you intend, using a local
    namespace, then how about this:

    SYNTAX: FOO: scan-token '[ _ foo set ] append! ;

    That will set in the namespace that you want.

    On Tue, Dec 16, 2014 at 8:59 AM, John Benediktsson
    <mrj...@gmail.com <mailto:mrj...@gmail.com>> wrote:

        Also, I'm not sure why you need a parsing word for that, you
        can just:

        IN: foo

        SYMBOL: foo

        IN: bar

        foo [ "hello" ] initialize

        ... or

        "hello" foo set-global

        the first will initialize if not ``f``, the second will
        always set.



        On Tue, Dec 16, 2014 at 8:55 AM, Andrea Ferretti
        <ferrettiand...@gmail.com <mailto:ferrettiand...@gmail.com>>
        wrote:

            Hi, I am trying to define some syntax words that should
            have effect on
            a global (or dynamic) variable. What I am trying to
            achieve is
            something similar to how the LIBRARY: word affects later
            occurrences
            of FUNCTION:

            The problem is, it does not seem to work. The simplest
            example I can
            make is up the following.

            In package foo

                USING: kernel lexer namespaces ;
                IN: foo

                SYMBOL: foo

                SYNTAX: FOO: scan-token foo set ;

            Then in package bar

                USING: namespaces foo prettyprint ;
                IN: bar

                FOO: hello

                foo get .


            This executes the top level form `foo get .` but prints f
            instead of
            "hello". The same happens if I use run-file directly. If,
            instead, I
            make the same declaration

                FOO: hello

            in the listener, I can check that foo is modified.

            Is there a way to make this work? I could also avoi the
            variable, but
            while parsing I do not have access to the stack, and so I
            do not know
            how to pass any information among parsing words.

            
------------------------------------------------------------------------------
            Download BIRT iHub F-Type - The Free Enterprise-Grade
            BIRT Server
            from Actuate! Instantly Supercharge Your Business Reports
            and Dashboards
            with Interactivity, Sharing, Native Excel Exports, App
            Integration & more
            Get technology previously reserved for billion-dollar
            corporations, FREE
            
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
            _______________________________________________
            Factor-talk mailing list
            Factor-talk@lists.sourceforge.net
            <mailto:Factor-talk@lists.sourceforge.net>
            https://lists.sourceforge.net/lists/listinfo/factor-talk



    
------------------------------------------------------------------------------
    Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
    from Actuate! Instantly Supercharge Your Business Reports and Dashboards
    with Interactivity, Sharing, Native Excel Exports, App Integration & more
    Get technology previously reserved for billion-dollar corporations, FREE
    http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk


    _______________________________________________
    Factor-talk mailing list
    Factor-talk@lists.sourceforge.net  
<mailto:Factor-talk@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/factor-talk


    
------------------------------------------------------------------------------
    Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
    from Actuate! Instantly Supercharge Your Business Reports and
    Dashboards
    with Interactivity, Sharing, Native Excel Exports, App Integration
    & more
    Get technology previously reserved for billion-dollar
    corporations, FREE
    http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
    _______________________________________________
    Factor-talk mailing list
    Factor-talk@lists.sourceforge.net
    <mailto:Factor-talk@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/factor-talk



------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk


_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to