| Deutsch English Français Italiano |
|
<2024Oct4.135221@mips.complang.tuwien.ac.at> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.lang.forth
Subject: Re: value-flavoured structures
Date: Fri, 04 Oct 2024 11:52:21 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 68
Message-ID: <2024Oct4.135221@mips.complang.tuwien.ac.at>
References: <nnd$61e0ad9a$48ed61c2@b4d945e456041481> <2024Sep13.200734@mips.complang.tuwien.ac.at> <66e4f98b$1@news.ausics.net> <2024Sep14.081952@mips.complang.tuwien.ac.at> <vc6t1b$27sna$1@dont-email.me> <2024Sep15.181634@mips.complang.tuwien.ac.at> <vd5pjl$kdp4$1@dont-email.me> <2024Oct3.175858@mips.complang.tuwien.ac.at> <vdo4q8$4h5p$1@dont-email.me>
Injection-Date: Fri, 04 Oct 2024 14:14:39 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e836c6a0a468f0be540ff82074643594";
logging-data="216236"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19BqMEKrVxoK2QDQrk/HPAv"
Cancel-Lock: sha1:hMp5wDtlas5LkDF1p/1wfzzZrOQ=
X-newsreader: xrn 10.11
Bytes: 3754
Ruvim <ruvim.pinka@gmail.com> writes:
>1. From the lexical point of view, "to foo" and "set-foo" are almost the
>same. "to foo" can even be considered a separate fancy word with a
>space in its name.
Even closer: With the to-recognizer you can write ->FOO.
>3. "set-foo" can be easily redefined (for example, if you want to check
>the assigned value to prevent some bugs in advance).
>"to foo" *cannot* be redefined. Although, one can redefine "to" to check
>its argument and have a special action when its argument is "foo" — this
>is very cumbersome.
Wrong. It can be defined: Gforth has SET-TO
<https://gforth.org/manual/Words-with-user_002ddefined-TO-etc_002e.html>
which allows you to define what TO FOO does.
If you mean that a standard program cannot define it, true, but that's
just a matter of what is currently standardized.
>4. "set-foo" can be accessed using qualified names, such as
>mymodule::set-foo or mymodule( set-foo )
>A variant like "to mymodule::foo" could work,
>a variant like "to mymodule( set-foo )" cannot work.
Let's see:
[~/gforth:152808] gforth
Gforth 0.7.9_20241003
Authors: Anton Ertl, Bernd Paysan, Jens Wilke et al., for more type `authors'
Copyright © 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `help' for basic help
vocabulary voc ok
also voc definitions ok
5 value val ok
previous ok
voc:val ok 1
.. 5 ok
7 to voc:val \ <---------- ok
also voc ok
val . 7 ok
previous ok
8 ->voc:val \ <----------- ok
voc:val . 8 ok
3 +>voc:val \ <----------- ok
voc:val . 11 ok
I pointed out exactly where TO VOC:VAL, ->VOC:VAL and +>VOC:VAL occur.
No not only can it work, it already works in Gforth. And here the
"standard program excuse" does not apply, because neither your
qualification syntax nor Gforth's scope-recognizer are standardized.
>Bottom line: I don't see any advantages in *using* a to-based setter
>over a separate setter.
However, lots of Forth programmers have defined VALUEs, and barely any
have defined getters and setters. The discussions have been aboyt
values vs. variables, not about values vs. getters and setters.
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: https://forth-standard.org/
EuroForth 2024: https://euro.theforth.net