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


Groups > comp.lang.forth > #135249

Re: Naming issues in create-does

From Hans Bezemer <the.beez.speaks@gmail.com>
Newsgroups comp.lang.forth
Subject Re: Naming issues in create-does
Date 2026-07-23 19:58 +0200
Organization A noiseless patient Spider
Message-ID <113tkoe$23mu$1@dont-email.me> (permalink)
References (7 earlier) <2026Jun12.202222@mips.complang.tuwien.ac.at> <6a2ccb22$1@news.ausics.net> <110itki$2o3o7$1@dont-email.me> <6a2d4b1f$1@news.ausics.net> <110jugl$31kdb$1@dont-email.me>

Show all headers | View raw


On 13-06-2026 17:55, Ruvim wrote:
> On 2026-06-13 12:20, dxf wrote:
>> On 13/06/2026 4:33 pm, Ruvim wrote:
>>> On 2026-06-13 03:14, dxf wrote:
>>>> On 13/06/2026 4:22 am, Anton Ertl wrote:
>>>>> anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
>>>>>> Overall, SET-DOES> is unambiguous and good enough.
>>>>>
>>>>> But while we are at it, according to Andrew Haley early Forth had USE
>>>>> with the same functionality as SET-DOES>.
>>>>
>>>> I don't recall that one.  AFAIK the original definer was in the form:
>>>>
>>>>     : ... CONSTANT ;: ... ;
>>>>
>>>> Presumably 2CONSTANT VARIABLE etc could also be used.  Hard to find 
>>>> actual
>>>> examples as vintage code is scarce.
>>>>
>>>> In addition to CREATE DOES> F83 had:
>>>>
>>>>     : CONSTANT   (S n -- )
>>>>        CREATE ,   ;USES DOCONSTANT ,
>>>>
>>>> a move closer to the xt variants.
>>>>
>>>> DX-Forth implemented BUILD to support its compilation model.  I saw no
>>>> reason to persist with the 'CREATE then patch' concept.
>>>>
>>>>     : CONSTANT ['] @ BUILD , ;
>>>
>>>
>>> BTW, do you consider `immediate` to be a from of patching as well?
>>
>> IMMEDIATE alters a flag in the word's header that informs the compiler
>> how the word should be treated.  Nothing is actually replaced.

> In some implementations, the run-time semantics of `does>` only stores
> an xt at an address. For example, this is how my portable create-does
> implementation [1] works.
> 
> [1] <https://gist.github.com/ruv/4b957889b59480cb19a440d00346b0ae>


Oh, how wildly different 4tH works. First, you cannot use when defining 
a new datatype, cause apart from defining arrays of various length, you 
cannot define new data types.

You can only add DOES> to either a cell or a character (array) -- and 
only if that symbol returns either a literal or a variable. And it 
should represent a (cell or string (array)) pointer. E.g. you can add a 
DOES> to a string or array, but not a VALUE (because it returns a value, 
not a pointer).

What a DOES> does is create a *NEW* definition with the *name* of the 
original variable or and compiles the pointer before adding the rest of 
the code.

For this reason, this Gforth lines in 
https://rosettacode.org/wiki/15_puzzle_game#Forth can be compiled by 4tH 
unchanged:

create valid? ' up-valid? , ' left-valid? , ' right-valid? , ' 
down-valid? , does> ith execute ;
create step -4 , -1 , 1 , 4 , does> ith ;

Also the application of VALIOD

Hans Bezemer

> -- 
> Ruvim
> 

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


Thread

Back to the Forth Virus clv2020 <clv2020@vodafonemail.de> - 2026-06-08 13:40 +0200
  Re: Back to the Forth Virus Jan Coombs <jan4etsept@murray-microft.co.uk> - 2026-06-08 13:16 +0100
  Re: Back to the Forth Virus Ruvim <ruvim.pinka@gmail.com> - 2026-06-08 12:23 +0000
    Re: Back to the Forth Virus Daniel Cerqueira <dan.list@lispclub.com> - 2026-06-08 13:56 +0100
      Re: Back to the Forth Virus anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-08 15:40 +0000
        Re: Back to the Forth Virus Daniel Cerqueira <dan.list@lispclub.com> - 2026-06-08 19:26 +0100
          Re: Back to the Forth Virus anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-08 20:06 +0000
        GForth reproducible builds (was Re: Back to the Forth Virus) Kragen Javier Sitaker <kragen@canonical.org> - 2026-09-02 14:40 -0300
  Re: Back to the Forth Virus minforth <minforth@gmx.net> - 2026-06-09 01:01 +0200
    Re: Back to the Forth Virus clv2020 <clv2020@vodafonemail.de> - 2026-06-10 13:13 +0200
      Re: Back to the Forth Virus minforth <minforth@gmx.net> - 2026-06-11 10:01 +0200
        Re: Back to the Forth Virus anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-11 17:28 +0000
          Naming issues in create-does (was: Back to the Forth Virus) Ruvim <ruvim.pinka@gmail.com> - 2026-06-12 17:23 +0000
            Re: Naming issues in create-does (was: Back to the Forth Virus) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-12 17:52 +0000
              Re: Naming issues in create-does (was: Back to the Forth Virus) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-12 18:22 +0000
                Re: Naming issues in create-does dxf <dxforth@gmail.com> - 2026-06-13 13:14 +1000
                Re: Naming issues in create-does Ruvim <ruvim.pinka@gmail.com> - 2026-06-13 06:33 +0000
                Re: Naming issues in create-does dxf <dxforth@gmail.com> - 2026-06-13 22:20 +1000
                Re: Naming issues in create-does Ruvim <ruvim.pinka@gmail.com> - 2026-06-13 15:55 +0000
                Re: Naming issues in create-does Ruvim <ruvim.pinka@gmail.com> - 2026-06-15 13:08 +0000
                Re: Naming issues in create-does Hans Bezemer <the.beez.speaks@gmail.com> - 2026-07-23 19:58 +0200
                Defining words in more than one step (was: Naming issues in create-does) anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-13 06:46 +0000
                Re: Defining words in more than one step dxf <dxforth@gmail.com> - 2026-06-14 12:29 +1000
              Re: Naming issues in create-does Ruvim <ruvim.pinka@gmail.com> - 2026-06-12 19:59 +0000
                Re: Naming issues in create-does anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-13 10:25 +0000
                Re: Naming issues in create-does Ruvim <ruvim.pinka@gmail.com> - 2026-06-13 15:30 +0000
                Re: Naming issues in create-does anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2026-06-13 17:30 +0000
              Re: Naming issues in create-does (was: Back to the Forth Virus) peter <peter.noreply@tin.it> - 2026-06-13 20:21 +0200
  Re: Back to the Forth Virus dxf <dxforth@gmail.com> - 2026-06-09 12:14 +1000
    Re: Back to the Forth Virus "Kerr-Mudd, John" <admin@127.0.0.1> - 2026-06-10 18:54 +0100
      Re: Back to the Forth Virus dxf <dxforth@gmail.com> - 2026-06-11 16:32 +1000
        Re: Back to the Forth Virus "Kerr-Mudd, John" <admin@127.0.0.1> - 2026-06-11 14:20 +0100
  Re: Back to the Forth Virus Stephen Pelc <stephen@vfxforth.com> - 2026-06-09 10:22 +0000
    Re: Back to the Forth Virus clv2020 <clv2020@vodafonemail.de> - 2026-06-10 15:55 +0200
  Re: Back to the Forth Virus albert@SPENARNC.XS4ALL.NL - 2026-07-24 13:35 +0200

csiph-web