Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #40896

Re: RfD: Quotations

From "Alex McDonald" <blog@rivadpm.com>
Newsgroups comp.lang.forth
Subject Re: RfD: Quotations
Date 2015-07-29 14:20 +0100
Organization A noiseless patient Spider
Message-ID <mpajr5$kib$1@dont-email.me> (permalink)
References <mp8o6q$plc$1@dont-email.me> <2015Jul29.093553@mips.complang.tuwien.ac.at>

Show all headers | View raw


on 29/07/2015 08:35:57,  wrote:
> "Alex McDonald" <blog@rivadpm.com> writes:
>>[: ( -- c: nested-sys )
> 
> There is the danger of confusion with nest-sys (the return address of
> a call to a colon definition).  Maybe quotation-sys?
> 
> Otherwise the RfD looks good (except that it does not contain test
> cases).
> 
>>Implementation
>>--------------
>>
>>It is not possible to define quotations in ISO Forth. The following
>>is an outline definition.
>>
>>: [: ( -- c: nested-sys )
>>    postpone ahead :noname ; immediate
>>
>>: ;] ( c: nested-sys -- ) ( -- xt )
>>    postpone ; postpone then ; immediate
> 
> This does capture the fact that there is typically some state (e.g.,
> STATE) that :NONAME does not save and ; does not restore, but that
> needs to be saved and restored (well, for STATE it's sufficient to "]"
> in ";]"). It also does not capture the necessary POSTPONE LITERAL.

I should have used my implementation, stripped back. I rewrote it too
hastily.

Rather than ; it uses EXIT, since it disturbs none of the state or STATE.

: [:  ( -- c: orig xt' ) \ start an anonymous quotation
    only-compiles> 
      postpone ahead :noname ; \ is xt'

: ;]  ( c: orig xt' -- ) ( -- s: xt' )  \ end an anonymous quotation
    only-compiles> 
      >r postpone exit
      postpone then
      r> postpone literal ;    \ xt' is the xt of the [: ;] section

On second thoughts, EXIT is not appropriate for a general solution. It's
not clear if the standard requires the XT of :NONAME to be available at
:NONAME or ; .

> 
> There have been some discussions between Bernd Paysan and me that one
> could capture the saving and restoring in a separate pair of words,
> maybe [{ and }].  Then
> 
>: foo [: bla ;] ;
> 
> could also be expressed as
> 
>: foo [{ :noname bla ; >r }] [ r> ] literal ;
> 
> The background is that Bernd Paysan likes to put additional
> definitions inside the [: ... ;], e.g.
> 
> [: yyy ; comp: zzz ;] set-to
> 
> based on the view that this is equivalent to
> 
> [{ :noname yyy ; >r comp: zzz ; }] [ r> ] literal set-to
> 
> (which is still not that easy to understand; I think the idea is that
> the EXECUTE and COMPILE, methods of TO FOO are specified through the
> EXECUTE and COMPILE, methods of the xt passed to SET-TO.)
> 
> Anyway, given thatq, the definition of [: and ;] would
> look as follows:
> 
>: [{ ( -- C: halfquot-sys )
> POSTPONE ahead save-colon-definition-state ; immediate
>: }] ( C: half-quot-sys )
> restore-colon-definition-state postpone then ;
>: [: ( -- C: quotation-sys )
> postpone [{ :noname ; immediate
>: ;] ( C: quotation-sys -- ) ( -- xt )
> postpone ; >r postpone }] r> postpone literal ; immediate
> 

Thanks.

I'll update the RfD and reisssue after waiting for other comments.

> - anton

Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-28 21:22 +0100
  Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-29 07:35 +0000
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 14:20 +0100
  Re: RfD: Quotations Ron Aaron <rambamist@gmail.com> - 2015-07-29 13:44 +0300
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 13:42 +0100
  Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 05:35 -0700
    Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-29 13:34 +0000
      Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 07:35 -0700
        Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-29 15:05 +0000
        Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 16:19 +0100
          Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-29 21:48 +0100
      Re: RfD: Quotations mhx@iae.nl - 2015-07-29 11:13 -0700
        Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-30 13:04 +0000
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 15:07 +0100
      Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 07:44 -0700
        Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-29 15:12 +0000
        Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 16:18 +0100
          Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-29 18:37 +0200
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 17:55 +0100
              Re: RfD: Quotations "Elizabeth D. Rather" <erather@forth.com> - 2015-07-29 19:51 -0500
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 03:31 +0200
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-29 19:30 -0700
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 21:19 -0700
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 21:37 -0700
                Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-30 11:45 +0000
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-30 08:07 -0700
                Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-31 10:54 +0000
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 12:48 +0100
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-31 05:40 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 14:46 +0100
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 14:50 +0100
                Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-31 14:46 +0000
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-31 13:16 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 21:49 +0100
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-29 22:42 -0700
                Re: RfD: Quotations "Elizabeth D. Rather" <erather@forth.com> - 2015-07-30 08:46 -0500
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-29 21:40 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 10:01 +0100
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 12:00 +0200
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 11:10 +0100
                Re: RfD: Quotations Coos Haak <chforth@hccnet.nl> - 2015-07-30 16:35 +0200
            Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-29 16:53 +0000
          Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-29 19:03 +0200
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 18:24 +0100
              Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 01:38 +0200
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 09:10 +0100
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 12:06 +0200
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 11:21 +0100
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 14:00 +0200
                Re: RfD: Quotations franck.bensusan@gmail.com - 2015-07-30 06:59 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 10:53 +0100
            Re: RfD: Quotations Paul Rubin <no.email@nospam.invalid> - 2015-07-29 10:35 -0700
              Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 01:45 +0200
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 03:17 +0200
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-29 19:21 -0700
                Re: RfD: Quotations Paul Rubin <no.email@nospam.invalid> - 2015-07-29 23:04 -0700
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 12:38 +0200
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 12:09 +0100
                Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 13:26 +0200
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 09:47 +0100
                Re: RfD: Quotations Raimond Dragomir <raimond.dragomir@gmail.com> - 2015-07-31 02:51 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 11:21 +0100
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 09:11 +0100
            Re: RfD: Quotations Paul Rubin <no.email@nospam.invalid> - 2015-07-29 11:36 -0700
              Re: RfD: Quotations Paul Rubin <no.email@nospam.invalid> - 2015-07-29 11:37 -0700
            Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-30 13:07 +0000
              Re: RfD: Quotations Bernd Linsel <bl1@gmx.com> - 2015-07-30 16:25 +0200
          Re: RfD: Quotations mhx@iae.nl - 2015-07-29 11:16 -0700
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 20:27 +0100
              Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-29 21:57 +0100
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-29 22:48 +0100
                Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-31 12:34 +0100
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 13:00 +0100
                Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-31 14:31 +0000
                Re: RfD: Quotations mhx@iae.nl - 2015-07-31 11:32 -0700
              Re: RfD: Quotations mhx@iae.nl - 2015-07-29 21:42 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 09:57 +0100
          Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-29 17:21 -0700
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 09:56 +0100
              Re: RfD: Quotations franck.bensusan@gmail.com - 2015-07-30 04:15 -0700
                Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 12:30 +0100
                Re: RfD: Quotations franck.bensusan@gmail.com - 2015-07-30 05:04 -0700
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-30 13:07 -0700
  Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-29 16:52 -0700
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 09:53 +0100
  Re: RfD: Quotations Bernd Paysan <bernd.paysan@gmx.de> - 2015-07-30 21:45 +0200
    Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-30 13:25 -0700
      Re: RfD: Quotations Julian Fondren <ayrnieu@gmail.com> - 2015-07-30 15:11 -0700
        Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 09:11 +0100
          Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-31 12:04 +0100
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-30 22:51 +0100
      Re: RfD: Quotations hughaguilar96@gmail.com - 2015-07-30 22:38 -0700
        Re: RfD: Quotations "Rod Pemberton" <boo@fasdfrewar.cdm> - 2015-07-31 02:10 -0400
        Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 09:01 +0100
          Re: RfD: Quotations hughaguilar96@gmail.com - 2015-08-01 14:59 -0700
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-08-01 23:36 +0100
              Re: RfD: Quotations Bernd Paysan <bernd.paysan@gmx.de> - 2015-08-02 01:19 +0200
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-08-01 18:27 -0700
                Re: RfD: Quotations hughaguilar96@gmail.com - 2015-08-09 14:34 -0700
  Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-07-31 08:52 +0000
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 11:57 +0100
  Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-31 21:42 +0100
    Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-07-31 22:25 +0100
      Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-07-31 23:39 +0100
        Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-08-01 10:59 +0100
    Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-08-01 14:18 +0000
      Re: RfD: Quotations Bernd Paysan <bernd.paysan@gmx.de> - 2015-08-01 22:10 +0200
        Re: RfD: Quotations anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2015-08-02 05:36 +0000
          Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-08-03 16:40 +0100
            Re: RfD: Quotations "Alex McDonald" <blog@rivadpm.com> - 2015-08-03 18:02 +0100
              Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-08-03 20:22 +0100
            Re: RfD: Quotations Coos Haak <chforth@hccnet.nl> - 2015-08-04 02:10 +0200
              Re: RfD: Quotations Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2015-08-04 08:49 +0100
  Re: RfD: Quotations hughaguilar96@gmail.com - 2015-08-01 15:15 -0700

csiph-web