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


Groups > comp.lang.forth > #53455 > unrolled thread

"Hello world" using Hughs novice package

Started byawegel@arcor.de (Alexander Wegel)
First post2016-12-21 01:19 +0100
Last post2017-01-08 16:55 -0800
Articles 20 on this page of 266 — 26 participants

Back to article view | Back to comp.lang.forth


Contents

  "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-21 01:19 +0100
    Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-12-24 05:40 -0600
      Re: "Hello world" using Hughs novice package Julian Fondren <julian.fondren@gmail.com> - 2016-12-24 06:01 -0800
      Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-25 19:27 +0100
        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-26 18:16 -0800
          Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-27 14:27 +0100
            Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-27 14:29 +0100
          Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-27 14:27 +0100
            Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2016-12-28 11:35 +1100
              Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2016-12-27 17:38 -0800
                Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2016-12-29 10:11 +1100
                Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2016-12-29 17:06 -0800
              Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-28 05:39 +0100
                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-27 22:37 -0800
                  Re: "Hello world" using Hughs novice package crc <charles.childers@gmail.com> - 2016-12-28 05:40 -0800
                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-28 23:03 -0800
                      Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-30 20:54 +0100
                        Re: "Hello world" using Hughs novice package Coos Haak <htrofhc@gmail.com> - 2017-01-02 20:17 +0100
                          Re: "Hello world" using Hughs novice package mhx@iae.nl - 2017-01-02 12:22 -0800
                          Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-02 22:08 +0100
                          Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-02 21:40 -0800
                            Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-03 13:51 +0100
                              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-03 21:51 -0800
                            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-06 19:36 -0800
                              Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-07 14:55 +0100
                                Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-07 19:01 +0100
                              Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-01-08 12:06 +0000
                                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-08 16:46 -0800
                          Re: "Hello world" using Hughs novice package "Robert L." <No_spamming@noWhere_7073.org> - 2017-01-03 15:59 +0000
                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-27 23:12 -0800
                  Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-30 20:54 +0100
              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-12-28 04:57 -0600
              Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-12-28 11:23 +0000
                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-28 23:16 -0800
                Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2016-12-30 16:31 +0000
                  Re: "Hello world" using Hughs novice package "David N. Williams" <williams@umich.edu> - 2016-12-30 15:21 -0500
                    Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-01-05 12:00 +0000
                      Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-05 13:30 +0100
                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-05 17:32 -0800
                          Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-06 02:50 +0100
                            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-05 18:20 -0800
                              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-06 17:58 -0800
                                Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-07 14:55 +0100
                      Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-05 16:15 +0000
                        Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2017-01-10 08:43 +0000
              Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2016-12-30 14:37 +0000
                Re: "Hello world" using Hughs novice package john <anon@example.com> - 2016-12-30 15:57 +0000
                  Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2016-12-30 17:19 +0000
                    Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-30 21:10 +0000
                      Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2016-12-30 12:44 -1000
                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 15:43 -0800
                        Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-31 00:09 +0000
                          Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-03 17:25 +0000
                      Re: "Hello world" using Hughs novice package john <anon@example.com> - 2016-12-30 22:47 +0000
                    Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-12-31 03:31 -0600
                Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-12-30 15:46 +0000
                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 15:05 -0800
                  Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-31 00:26 +0000
                Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2016-12-31 11:49 +1100
                  Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2016-12-30 15:21 -1000
                    Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2017-01-02 11:11 +1100
                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-02 00:28 +0000
                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-01 17:45 -0800
                          Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-01 20:57 -1000
                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 06:55 -0800
                          Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-02 10:44 +0000
                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 07:01 -0800
                              Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-02 15:46 +0000
                                Re: "Hello world" using Hughs novice package john <anon@example.com> - 2017-01-02 16:54 +0000
                                  Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 10:23 -0800
                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 10:06 -0800
                                  Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-02 19:13 +0000
                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 14:08 -0800
                                      Re: "Hello world" using Hughs novice package mhx@iae.nl - 2017-01-02 14:46 -0800
                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-02 17:10 -0800
                                          Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-02 21:58 -1000
                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-03 15:54 -0800
                                              Re: "Hello world" using Hughs novice package JUERGEN <epldfpga@aol.com> - 2017-01-04 06:21 -0800
                                                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-04 11:19 -0800
                                                  Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-04 22:34 +0100
                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-04 14:44 -0800
                                                  Re: "Hello world" using Hughs novice package JUERGEN <epldfpga@aol.com> - 2017-01-04 15:13 -0800
                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-05 08:18 -0800
                                                  Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-04 23:17 +0000
                                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-05 04:15 -0600
                                              Re: "Hello world" using Hughs novice package mhx@iae.nl - 2017-01-08 01:18 -0800
                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-08 15:52 -0800
                                                  Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-08 21:00 -1000
                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-09 15:58 -0800
                                                      Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2017-01-09 17:39 -0800
                                                      Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-09 18:53 -1000
                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-12 06:27 -0800
                                                          Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-12 13:44 -1000
                                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-12 17:36 -0800
                                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-13 03:17 -0600
                                                                Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-13 14:44 +0000
                                                                  Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-13 14:43 -0800
                                                                    Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-14 00:23 +0000
                                                                      Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-14 11:52 +0000
                                                                        Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-14 16:00 +0000
                                                                          Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2017-01-14 11:51 -0800
                                                                            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-14 15:06 -0800
                                                                          Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-15 14:54 +0000
                                                                            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-15 13:33 -0800
                                                                  Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-13 16:06 -0800
                                                                    Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-14 00:25 +0000
                                                                      Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-13 18:00 -0800
                                                                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-13 22:17 -0800
                                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-13 16:04 -0800
                                                                  Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-13 15:08 -1000
                                                                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-13 17:21 -0800
                                                                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-14 11:26 +0000
                                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-13 18:21 -0800
                                                                      Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2017-01-13 18:30 -0800
                                                                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-13 22:20 -0800
                                                                          Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-14 10:43 -0800
                                                                            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-14 15:47 -0800
                                                                              Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-14 17:30 -0800
                                                                                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-14 18:16 -0800
                                                                                  Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-15 13:53 -0800
                                                                                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-15 14:09 -0800
                                                                                      Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-15 15:48 -0800
                                                                                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-15 16:00 -0800
                                                                              Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-15 12:48 +0100
                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-14 10:10 -0800
                                                                          Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-15 17:56 -0600
                                                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-15 17:05 -0800
                                                                              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-15 17:35 -0800
                                                                              Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2017-01-15 19:20 -0800
                                                                                Re: "Hello world" using Hughs novice package Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2017-01-15 23:51 -0500
                                                                                  Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-15 19:22 -1000
                                                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-18 16:24 -0800
                                                                                  Re: "Hello world" using Hughs novice package foxaudioresearch@gmail.com - 2017-01-18 18:40 -0800
                                                                                  Re: "Hello world" using Hughs novice package Ron Aaron <rambamist@gmail.com> - 2017-01-19 06:46 +0200
                                                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-18 23:25 -0800
                                                                                  Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-19 09:47 +0000
                                                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-19 02:44 -0800
                                                                                      Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-19 06:16 -0600
                                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-19 07:43 -0800
                                                                                          Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-19 11:07 -0600
                                                                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-19 14:58 -0800
                                                                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-20 03:48 -0600
                                                                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-20 06:54 -0800
                                                                                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-20 09:11 -0600
                                                                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-20 07:30 -0800
                                                                                                      Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-20 12:12 -0600
                                                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-20 16:27 -0800
                                                                                                          Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-21 03:24 -0600
                                                                                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-22 12:47 -0800
                                                                                                              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-22 14:41 -0800
                                                                                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-22 15:57 -0800
                                                                                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-23 04:05 -0600
                                                                                                                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-23 10:47 -0800
                                                                                                                  Re: "Hello world" using Hughs novice package Mark Wills <markwills1970@gmail.com> - 2017-01-24 01:02 -0800
                                                                                                                    Re: "Hello world" using Hughs novice package Paul Rubin <no.email@nospam.invalid> - 2017-01-24 01:12 -0800
                                                                                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-23 16:28 -0800
                                                                                                                  Re: "Hello world" using Hughs novice package Mark Wills <markwills1970@gmail.com> - 2017-01-24 01:06 -0800
                                                                                                                    Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-24 03:22 -0600
                                                                                                                      Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-24 14:19 +0100
                                                                                                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-24 03:13 -0600
                                                                                                                    Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-24 08:08 -0500
                                                                                                                      Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-24 14:23 +0100
                                                                                                                        Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-24 09:10 -0500
                                                                                                                      Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-24 15:35 +0000
                                                                                                                        Persitent memory (was Re: "Hello world" using Hughs novice package) Alex <alex@rivadpm.com> - 2017-01-24 14:19 -0500
                                                                                                                          Re: Persitent memory (was Re: "Hello world" using Hughs novice package) Alex <alex@rivadpm.com> - 2017-01-24 15:00 -0500
                                                                                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-24 14:49 -0800
                                                                                                                      Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-25 03:26 -0600
                                                                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-26 04:27 -0800
                                                                                                                          Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-26 08:35 -0600
                                                                                                          Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-21 14:19 +0100
                                                                                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-22 12:55 -0800
                                                                                      Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-19 15:28 +0000
                                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-19 14:44 -0800
                                                                                        Re: "Hello world" using Hughs novice package Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2017-01-19 20:30 -0500
                                                                                          Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-20 18:21 +0000
                                                                                        Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-20 03:52 -0600
                                                                                          Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-20 06:58 -0800
                                                                                            Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-20 12:57 -0800
                                                                                              Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-20 16:31 -0800
                                                                                                Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-20 17:31 -0800
                                                                                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-19 08:48 -0800
                                                                                        Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-19 17:18 +0000
                                                                                          Re: "Hello world" using Hughs novice package alex@rivadpm.com - 2017-01-19 11:01 -0800
                                                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-19 14:51 -0800
                                                                                    Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-19 13:07 +0100
                                                                                      Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-19 14:26 +0000
                                                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-16 09:03 -0600
                                                                            Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-15 15:08 -1000
                                                                              Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-15 17:23 -0800
                                                                            Re: "Hello world" using Hughs novice package Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2017-01-15 22:18 -0500
                                                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-16 09:08 -0600
                                                                              Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-18 06:56 -0800
                                                                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-14 09:31 +0000
                                                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-15 17:33 -0600
                                                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-10 09:55 +0000
                                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-09 04:05 -0600
                                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-09 16:00 -0800
                                                      Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-10 04:13 -0600
                                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-12 06:40 -0800
                                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-02 21:07 -0800
                                  Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-03 04:46 -0600
                                    Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-03 16:11 -0800
                                      Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-04 04:27 -0600
                                        Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-04 14:26 -0800
                                          Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-04 23:09 +0000
                                            Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-05 00:02 +0000
                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-05 02:19 -0800
                                              Re: "Hello world" using Hughs novice package rickman <gnuarm@gmail.com> - 2017-01-05 05:56 -0500
                                                Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-05 06:33 -0800
                                                  Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-05 16:56 +0100
                                                  Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-05 19:03 +0000
                                                  Re: "Hello world" using Hughs novice package rickman <gnuarm@gmail.com> - 2017-01-06 06:45 -0500
                                          Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-05 04:27 -0600
                                            Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-05 06:22 -0800
                                              Re: "Hello world" using Hughs novice package Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-01-05 09:10 -0600
                                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-04 23:05 +0000
                                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-03 22:05 -0800
                                      Re: "Hello world" using Hughs novice package Ilya Tarasov <ilya74.tarasov@gmail.com> - 2017-01-04 13:44 -0800
                      Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-01 20:53 -1000
                    Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-01 19:55 -0800
                      Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-01 21:13 -0800
                        Re: "Hello world" using Hughs novice package foxaudioresearch@gmail.com - 2017-01-02 07:14 -0800
                          Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-02 07:42 -1000
                            Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-01-03 02:00 +0100
                              Re: "Hello world" using Hughs novice package Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2017-01-03 00:13 -0500
                                Re: "Hello world" using Hughs novice package "Elizabeth D. Rather" <erather@forth.com> - 2017-01-02 22:02 -1000
                                  Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-03 11:19 +0000
                                  Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-03 21:37 -0800
                              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-02 21:55 -0800
                              Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-03 11:26 +0000
                      Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-02 10:47 +0000
                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-02 20:57 -0800
                  Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 18:35 -0800
                    Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-31 04:29 +0100
                  Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-31 10:19 +0000
                  Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-02 17:08 +0000
                    Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2017-01-06 13:39 +1100
                      Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-05 19:13 -0800
            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-27 23:57 -0800
              Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2016-12-30 20:54 +0100
          Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-29 19:05 -0800
            Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-29 19:38 -0800
            Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2016-12-30 15:24 +1100
            Re: "Hello world" using Hughs novice package Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2016-12-30 16:01 +0000
              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 14:33 -0800
          Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-29 16:04 -0800
            Re: "Hello world" using Hughs novice package "HAA" <someone@microsoft.com> - 2016-12-30 12:42 +1100
            Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-12-30 07:24 +0000
              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 12:50 -0800
                Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-30 21:43 +0000
                  Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-30 14:38 -0800
                    Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2016-12-31 10:31 +0000
                      Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-31 07:04 -0800
                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-31 07:07 -0800
                      Re: "Hello world" using Hughs novice package Julian Fondren <julian.fondren@gmail.com> - 2016-12-31 07:46 -0800
                        Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2016-12-31 08:28 -0800
          Re: "Hello world" using Hughs novice package albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-12-30 16:53 +0100
          Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-06 20:49 -0800
            Re: "Hello world" using Hughs novice package Cecil Bayona <cbayona@cbayona.com> - 2017-01-06 23:28 -0600
              Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-06 22:22 -0800
            Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-07 14:55 +0100
              Re: "Hello world" using Hughs novice package Alex <alex@rivadpm.com> - 2017-01-07 21:20 +0000
                Re: "Hello world" using Hughs novice package awegel@arcor.de (Alexander Wegel) - 2017-01-07 22:57 +0100
              Re: "Hello world" using Hughs novice package anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-01-08 17:02 +0000
                Re: "Hello world" using Hughs novice package hughaguilar96@gmail.com - 2017-01-08 16:55 -0800

Page 1 of 14  [1] 2 3 … 14  Next page →


#53455 — "Hello world" using Hughs novice package

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-21 01:19 +0100
Subject"Hello world" using Hughs novice package
Message-ID<1myl1w4.mjthkq1ktpoo0N%awegel@arcor.de>
The following code prints "hello world" and uhm-exits forth.

\ the marvels of late binding
s" novice.4th" included
: w ." hello world" cr ;
0 allocation
at this point the program already did its thing and uhm-exited!

[toc] | [next] | [standalone]


#53517

FromAndrew Haley <andrew29@littlepinkcloud.invalid>
Date2016-12-24 05:40 -0600
Message-ID<VJ6dnb4ecpMuw8PFnZ2dnUU78IGdnZ2d@supernews.com>
In reply to#53455
Alexander Wegel <awegel@arcor.de> wrote:
> The following code prints "hello world" and uhm-exits forth.
> 
> \ the marvels of late binding
> s" novice.4th" included
> : w ." hello world" cr ;
> 0 allocation
> at this point the program already did its thing and uhm-exited!

Can you explain a little more?

Andrew.

[toc] | [prev] | [next] | [standalone]


#53518

FromJulian Fondren <julian.fondren@gmail.com>
Date2016-12-24 06:01 -0800
Message-ID<52748bd5-e955-4c81-baae-609939e04b88@googlegroups.com>
In reply to#53517
On Saturday, December 24, 2016 at 5:40:41 AM UTC-6, Andrew Haley wrote:
> Alexander Wegel <awegel@arcor.de> wrote:
> > The following code prints "hello world" and uhm-exits forth.
> > 
> > \ the marvels of late binding
> > s" novice.4th" included
> > : w ." hello world" cr ;
> > 0 allocation
> > at this point the program already did its thing and uhm-exited!
> 
> Can you explain a little more?
> 
> Andrew.

  see allocation
  : allocation  
    s\" ( adr -- size )               \\ unsigned" evaluate s\"     <allocation> 
    abs " evaluate ; immediate ok
  see <allocation> 
  : <allocation>  
    s\" ( adr -- size )             \\ signed \\ negative means it is a concrete 
    node" evaluate s\"     w - @ " evaluate ; immediate ok

That definition of W changes ALLOCATION's behavior.

[toc] | [prev] | [next] | [standalone]


#53536

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-25 19:27 +0100
Message-ID<1myrqv4.idwb3u135nllsN%awegel@arcor.de>
In reply to#53517
Andrew Haley <andrew29@littlepinkcloud.invalid> wrote:

> Alexander Wegel <awegel@arcor.de> wrote:
> > The following code prints "hello world" and uhm-exits forth.
> > 
> > \ the marvels of late binding

Correction: \ the marvels of "late binding"

> > s" novice.4th" included
> > : w ." hello world" cr ;
> > 0 allocation
> > at this point the program already did its thing and uhm-exited!
> 
> Can you explain a little more?

Well, Hugh was sad that nobody reads his code, so i had a look at it.

Merry christmas!

[toc] | [prev] | [next] | [standalone]


#53555

Fromhughaguilar96@gmail.com
Date2016-12-26 18:16 -0800
Message-ID<955f42cb-6a57-45d4-be90-cd31167e994c@googlegroups.com>
In reply to#53536
On Sunday, December 25, 2016 at 11:27:11 AM UTC-7, Alexander Wegel wrote:
> Andrew Haley <andrew29@littlepinkcloud.invalid> wrote:
> 
> > Alexander Wegel <awegel@arcor.de> wrote:
> > > The following code prints "hello world" and uhm-exits forth.
> > > 
> > > \ the marvels of late binding
> 
> Correction: \ the marvels of "late binding"
> 
> > > s" novice.4th" included
> > > : w ." hello world" cr ;
> > > 0 allocation
> > > at this point the program already did its thing and uhm-exited!
> > 
> > Can you explain a little more?
> 
> Well, Hugh was sad that nobody reads his code, so i had a look at it.
> 
> Merry christmas!

I originally wrote MACRO to use early-binding. This was under UR/Forth and was part of MFX. I later upgraded this to ANS-Forth, but I got criticized for that here:
https://groups.google.com/forum/#!topic/comp.lang.forth/wP5nw1ClzsM%5B1-25%5D
The problem was that FIND is ambiguous, so while my early-binding MACRO worked under SwiftForth, it didn't work under Gforth. Anton Ertl said this:

On Thursday, November 26, 2009 at 3:24:06 AM UTC-7, Anton Ertl wrote:
> Hugh Aguilar <hugoaguilar@rosycrew.com> writes:
> >On Nov 25, 4:14=A0am, an...@mips.complang.tuwien.ac.at (Anton Ertl)
> >wrote:
> >> >On Nov 25, 8:57=3DA0am, Hugh Aguilar <hugoagui...@rosycrew.com> wrote:
> >> >> I don't use gforth. What does that error message mean? What is a
> >> >> "compile-only word?"
> >>
> >> A word without interpretation semantics.
> >>
> >> >It doesn't like you taking the address of ";" , though I don't
> >> >understand why.
> >>
> >> Because ";" has no execution or interpretation semantics. =A0The
> >> execution token returned by ['] represents the execution semantics,
> >> but since ";" does not have that ...
> >
> >I don't understand how a word can not have execution semantics.
> 
> That's quite simple: By not defining execution semantics in the
> definition of the word in the standard document.  Look up the
> definition of ";" in the standard, and you will see that there is no
> "Execution:" section there; and there are other labeled sections
> there, so the "omitted label" sentence of 3.4.3.1 does not apply.
> 
> >For immediate words (IF, ;, etc.)
> 
> IF and ";" are not immediate words in the standard.  A system can
> implement them as immediate words, but a program cannot rely on their
> immediacy.
> 
> >I looked up ['] in the ANS-Forth document and it says:
> >
> >"Place name's execution token xt on the stack."
> 
> What's the execution token of a word that has no execution semantics.
> 
> Hmm, since you think that ";" is immediate, I guess you want an
> execution token that, when executed, performs the compilation
> semantics.  You can get that as follows.  Before the rest of the
> program, define:
> 
> : ; postpone ; ; immediate
> 
> Now you have an immediate ";" with an execution semantics that's the
> same as the compilation semantics, and you can tick it.
> 
> >What I am saying is that I didn't have any warning that what I was
> >doing in MACRO: was going to be a problem.
> 
> A system that would tell us all non-standard usages would be nice, but
> we don't have that.  For now the solution is to test on as many
> systems as possible.
> 
> - anton

He described how to write disambiguifiers. At the time however, what I did was just switch over to late-binding. Now I have disambiguifiers in the novice-package (to be released in a few days). So, I rewrote MACRO: to use early-binding (note that LATE-MACRO: is the old late-binding MACRO: that I have been using all these years):
---------------------------------------------------------------------------

true        value early?                \ should we compile early-binding (otherwise late-binding)

: parse? ( char -- adr cnt more? )          \ the flag is true if more parsing is needed
    >in @ >r
    parse               \ -- adr cnt
    >in @  r> -         \ -- adr cnt consumed
    over = ;            \ -- adr cnt ?      \ if char found, it won't be in the string

: sure-word ( char -- str )                 \ like WORD except won't return an empty string if at the end of a line
    locals| char |
    begin  char word  dup c@ 0= while 
        drop
        refill 0= abort" *** SURE-WORD ran out of source-code ***"
        repeat ;

: late-macro: ( -- )
    :
    begin
        [char] ; parse? >r
        postpone sliteral  postpone evaluate
        r> while
            refill 0= abort" *** MACRO: never found a semicolon ***"
            repeat
    postpone ;  immediate ;
        
\ LATE-MACRO: just does string expansion.
\ If any words get recompiled, the old macro will use the new word rather than the old word.
\ Note also that LATE-MACRO: searches for the ; as a string.
\ If ; is part of a word name, is in a comment, is used after POSTPONE, etc.,
\ then chaos will result. I don't know of any way to avoid this bug.

\ Another way to create chaos is to define a macro for a redefinition of an old word,
\ and to use that old word in the macro. This is possible in a colon word because colon
\ smudges the new word and semi-colon unsmudges it, so the old word is referenced within.
\ MACRO: doesn't smudge however, so this would result in recursion of the macro.

\ LATE-MACRO: words can be used interpretively.
\ If they contain code that can't be used interpretively, they will crash.
\ For example, RR@ below can't be used interpretively because of the 2R@ in it.

early? [if]        
            
variable 'special-macro:

: special-macro: ( xt -- xt | 0 )       \ returns 0 if xt was special-cased
    case
    ['] \  of           postpone \                              0 exit  endof
    ['] (  of           postpone (                              0 exit  endof
    ['] [char]  of      postpone [char]     postpone lit,       0 exit  endof
    exit  endcase ;                 \ -- xt     \ EXIT with xt if it was never special-cased

' special-macro:  'special-macro: !

\ Note that SPECIAL-MACRO: doesn't special-case C" and S" yet, so those shouldn't be used until they are added on.
\ C" S" and S| will be written later in the novice-package.

: <macro:> ( -- )
    begin
        bl sure-word find           \ -- str 0 | xt 1 | xt -1       \ the 1 means immediate, -1 means non-immediate
        ?dup if
            -1 = if
                postpone literal  postpone compile,
            else
                dup ['] ; = if  drop  exit then
                'special-macro: @ execute  ?dup if  postpone literal  postpone execute  then
                then
        else
            count str>num
            dup #invalid = if   drop    true abort" *** MACRO: didn't recognize the string ***"  then
            dup #single = if    drop    postpone literal    postpone lit,   then
            dup #double = if    drop    postpone 2literal   postpone dlit,  then
            dup #float = if     drop    postpone fliteral   postpone flit,  then
            then
        again ;

: macro: ( -- )
    :  <macro:>  postpone ;  immediate ;
    
[else]    

: macro: ( -- )
    postpone late-macro: ;

[then]    

---------------------------------------------------------------------------

There are some complications:

1.) The words defined with MACRO: can't be used interpretively. You'll get an error-message. This can be fixed by wrapping the macro in a colon word and then using the colon word interpretively.

2.) I used STR>NUM to convert strings to numbers in MACRO: --- this works, but it is not compatible with the ANS-Forth outer-interpreter. For example, a float such as 2e is illegal for STR>NUM and has to be converted to 2. or 2.e1 which are both legal. A double such as 2. would be interpreted as a float by STR>NUM and has to be converted to ,2 which is legal. 

3.) If the MACRO: word accesses local variables in a colon word that isn't defined yet, then LATE-MACRO: has to be used --- I had to do this for all the macros used by SORT --- words like SORT were originally written using global variables and sub-functions, then later converted to use local variables and macros in order to be reentrant.

4.) The words defined with MACRO: can't be ticked and the xt used at run-time, because they are immediate --- this was true of the late-binding MACRO: words too --- this isn't generally a problem because MACRO: is only used for low-level words that wouldn't normally be ticked.

5.) The MACRO: words can contain both non-immediate and immediate words. Any immediate word that extracts data from the input stream (with WORD or PARSE) has to be special-cased. If it isn't, then you get an error-message. Special-casing these words is easy though, so users can do this themselves if necessary, even if they don't understand how MACRO: works.

In the code above, I special-cased ( \ and [CHAR] --- but I didn't special-case C" and S" that are also problematic. Later in the novice-package I write my own C" and S" to fix some bugs in ANS-Forth (only one S" is allowed interpretively, and C" isn't allowed interpretively at all). So, after writing these, it was necessary to special-case them. This is easy:
---------------------------------------------------------------------------

: special-macro: ( xt -- xt | 0 )       \ returns 0 if xt was special-cased
    [ 'special-macro: @ ] literal  execute  dup 0= if  exit then
    case
    ['] s|  of          postpone s|         postpone dlit,      0 exit  endof
    ['] s"  of          postpone s"         postpone dlit,      0 exit  endof
    ['] c"  of          postpone c"         postpone lit,       0 exit  endof
    exit  endcase ;                 \ -- xt     \ EXIT with xt if it was never special-cased

' special-macro:  'special-macro: !

---------------------------------------------------------------------------

So, the whole novice-package is now early-binding. Woo hoo! As a practical matter, the late-binding was never a problem for me. I'm not going to write a word like:

    : w ." hello world" cr ;

I am well aware that W is a defined word, as I have been using W going way back to my MFX days. Also, I'm not going to write code like:

    0 allocation

That is nonsense, because ALLOCATION is supposed to return the size of memory-blocks provided by ALLOCATE etc. --- there is no memory block at address zero --- Alex doesn't know what any of this code does, and I doubt that he is capable of learning.

The biggest problem with my new-and-improved MACRO: is that it uses STR>NUM which isn't compatible with the ANS-Forth outer-interpreter string-to-number conversion code (which weirdly isn't exposed to the ANS-Forth user). Some literal numbers may need to be modified to work with STR>NUM rules --- this is only an issue for doubles and floats.

I don't have the patience to write another STR>NUM function that is compatible with the bizarre numeric conventions of ANS-Forth --- using the '.' to indicate a double-precision integer is just bizarre --- an 'e' without a number after it is also bizarre.

There are very few people on comp.lang.forth who are capable of writing a STR>NUM function. I will leave this as a New Year's challenge though --- if anybody does this, and it works with the bizarre numeric conventions of the ANS-Forth outer-interpreter, I will use it in MACRO: rather than my current STR>NUM that uses my own numeric conventions.

[toc] | [prev] | [next] | [standalone]


#53557

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-27 14:27 +0100
Message-ID<1myx2jn.siw01p1b4ss42N%awegel@arcor.de>
In reply to#53555
<hughaguilar96@gmail.com> wrote:

> Alex doesn't know what any of this code does,

If you think 

> and I doubt that he is capable of learning.

[toc] | [prev] | [next] | [standalone]


#53559

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-27 14:29 +0100
Message-ID<1myx6w0.kcb6tqi5xev4N%awegel@arcor.de>
In reply to#53557
Alexander Wegel <awegel@arcor.de> wrote:

> <hughaguilar96@gmail.com> wrote:
> 
> > Alex doesn't know what any of this code does,
> 
> If you think 
> 
> > and I doubt that he is capable of learning.

Plesae ignore this unfinished post.

[toc] | [prev] | [next] | [standalone]


#53558

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-27 14:27 +0100
Message-ID<1myx38i.1tw19gtlxm0cgN%awegel@arcor.de>
In reply to#53555
<hughaguilar96@gmail.com> wrote:

> So, the whole novice-package is now early-binding. Woo hoo! As a
> practical matter, the late-binding was never a problem for me.

Maybe - but in order to write anything worthwhile for others (you're not
the only novice out there), only thinking of yourself won't cut it - i
guess that's where you totally fail.

Your so called "late binding" kludge spoiled the whole forth experience
(normally in forth words don't fall apart for no good reason after
they're defined).

This was problematic, and it was sloppy and lazy (or rather: unsavvy)
programming of your part, and you knew it (it only took someone to poke
your nose into it to finally make you fix it).

> I'm not going to write a word like:
> 
>     : w ." hello world" cr ;
> 
> I am well aware that W is a defined word, as I have been using W
> going way back to my MFX days.

Well - this is just an example. It's not only W, there's also F and
potentially *every* word being used in *any* of your macros.

Add to this that only half of the words in the package are defined using
macro (because you only added "macro:" in order to abuse it as an
inlining facility), in the end half of the words are changing behavior,
while the rest doesn't. LOL.

You don't even have to call a definition W: Having a local variable of
that name also breaks the package. Eg:

: chksz {: m w h -- :} w h * m allocation > ;

would bomb too (it won't print hello world though, so it's not as funny
as the first example).

Also, any definition of a W or F or ... that happens to be in the search
order (above the package words) at the time a macro is being used(!)
will have the same effect.

> Also, I'm not going to write code like:
> 
>     0 allocation
> 
> That is nonsense, because ALLOCATION is supposed to return the size of
> memory-blocks provided by ALLOCATE etc. --- there is no memory block
> at address zero ---

Man - you're so smart.
Now try it with an allocated block and tell me the difference.
(Spoiler: None!)

BTW: If you really think that allocation is the only affected word,
then i doubt that you are smart enough for plumbing (let alone
programming).

> Alex doesn't know what any of this code does, and I doubt that he is
> capable of learning.

In the end, the problem isn't just the crappiness of the software, but
mostly that of its author.

A tip: Whenever you think bad about someone, because he doesn't
"brown-nose" you or because what he writes doesn't seem to make sense to
you immediately, the first thing you need to check is your head!

Now go fix your crappage, i'm (not) waiting for more than half a decade
now (remember "alien alphabet"? your packages inflexibility kept you
from solving it - LOL).

[toc] | [prev] | [next] | [standalone]


#53572

From"HAA" <someone@microsoft.com>
Date2016-12-28 11:35 +1100
Message-ID<o3v1bj$d9u$1@gioia.aioe.org>
In reply to#53558
Alexander Wegel wrote:
> <hughaguilar96@gmail.com> wrote:
>
> > So, the whole novice-package is now early-binding. Woo hoo! As a
> > practical matter, the late-binding was never a problem for me.
>
> Maybe - but in order to write anything worthwhile for others (you're not
> the only novice out there), only thinking of yourself won't cut it - i
> guess that's where you totally fail.
> ...

I don't agree.  All that's been demonstrated is that it's difficult to write a
non-trivial ANS portable program that will tick all the boxes.  As for your
experience, the system informed you (or should have) that a redefinition
had taken place.  If you ignored it whose fault was that?
Forthers typically write their own code and knowing what's in it avoid
potential problems.  Use another's code blindly and the responsibility
is all yours.


[toc] | [prev] | [next] | [standalone]


#53573

FromPaul Rubin <no.email@nospam.invalid>
Date2016-12-27 17:38 -0800
Message-ID<87ful8ygrg.fsf@nightsong.com>
In reply to#53572
"HAA" <someone@microsoft.com> writes:
> the system informed you (or should have) that a redefinition
> had taken place.  If you ignored it whose fault was that?

It's easy to miss those messages in an interactive session where the
interpreter intersperses them with the whole body of the source code as
it compiles.

[toc] | [prev] | [next] | [standalone]


#53593

From"HAA" <someone@microsoft.com>
Date2016-12-29 10:11 +1100
Message-ID<o41gs6$8in$1@gioia.aioe.org>
In reply to#53573
Paul Rubin wrote:
> "HAA" <someone@microsoft.com> writes:
> > the system informed you (or should have) that a redefinition
> > had taken place.  If you ignored it whose fault was that?
>
> It's easy to miss those messages in an interactive session where the
> interpreter intersperses them with the whole body of the source code as
> it compiles.

It's also easy to insert PAGE at the point your code begins or
turn WARNING off around the sections that don't matter.




[toc] | [prev] | [next] | [standalone]


#53598

From"Elizabeth D. Rather" <erather@forth.com>
Date2016-12-29 17:06 -0800
Message-ID<ofednQZ5PLKLLvjFnZ2dnUU7-LudnZ2d@supernews.com>
In reply to#53573
On 12/27/16 5:38 PM, Paul Rubin wrote:
> "HAA" <someone@microsoft.com> writes:
>> the system informed you (or should have) that a redefinition
>> had taken place.  If you ignored it whose fault was that?
>
> It's easy to miss those messages in an interactive session where the
> interpreter intersperses them with the whole body of the source code as
> it compiles.
>

The Forths I'm familiar with don't have a lot of output at compile time 
except for warnings or error messages, all of which need to be looked 
at. The "whole body of the source code" is being processed, but not 
displayed.

Cheers,
Elizabeth

-- 
Elizabeth R. Conklin
FORTH, Inc.
6080 Center Drive, Suite 600
Los Angeles, CA  90045
USA

[toc] | [prev] | [next] | [standalone]


#53574

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-28 05:39 +0100
Message-ID<1myy6t9.ycho0fhub9aN%awegel@arcor.de>
In reply to#53572
HAA <someone@microsoft.com> wrote:

> Alexander Wegel wrote:
> > <hughaguilar96@gmail.com> wrote:
> >
> > > So, the whole novice-package is now early-binding. Woo hoo! As a
> > > practical matter, the late-binding was never a problem for me.
> >
> > Maybe - but in order to write anything worthwhile for others (you're not
> > the only novice out there), only thinking of yourself won't cut it - i
> > guess that's where you totally fail.
> > ...
> 
> I don't agree. All that's been demonstrated is that it's difficult to write a
> non-trivial ANS portable program that will tick all the boxes.

I think that in this respect it has been demonstrated that writing a
non-trivial program is a non-trivial task, especially if you don't
really (want to?) know your platform.
And it has been demonstrated that bugs don't fix themselves, even if
someone told you how to do it easily 5 years ago.

I think that now with the finally-fixed-binding, the whole thing will
become a magnitude less ugly - which doesn't say a lot, just look at a
monster like this:

see exchange

: exchange  
  s\" ( adrX adrY size -- )   \\ the size of the record must be a
multiple of W
  " evaluate s\"     begin  dup while                    \\ -- adrX adrY
remain
  ing" evaluate s\"         over @  fourth @                \\ -- adrX
adrY rem
  aining Y X" evaluate s\"         fourth !  fourth !              \\ --
adrX a
  drY remaining" evaluate s\"         rot w +  rot w +  rot w -  "
evaluate 
  s\"         repeat" evaluate s\"     3drop " evaluate ; immediate

> As for your
> experience, the system informed you (or should have) that a redefinition
> had taken place.  If you ignored it whose fault was that?

~/novice.4th:208: warning: redefined macro:
~/novice.4th:226: warning: redefined rdrop
~/novice.4th:229: warning: redefined 2rdrop
~/novice.4th:295: warning: redefined aligned
~/novice.4th:306: warning: redefined align
~/novice.4th:404: warning: redefined +,
~/novice.4th:449: warning: redefined lit,
~/novice.4th:483: warning: redefined allocate
~/novice.4th:513: warning: redefined resize
~/novice.4th:518: warning: redefined free
~/novice.4th:549: warning: redefined bounds
~/novice.4th:554: warning: redefined try
~/novice.4th:577: warning: redefined s>f
~/novice.4th:602: warning: redefined <=
~/novice.4th:606: warning: redefined >=
~/novice.4th:610: warning: redefined u>=
~/novice.4th:619: warning: redefined d>=
~/novice.4th:623: warning: redefined d<=
~/novice.4th:627: warning: redefined d>
~/novice.4th:631: warning: redefined 2tuck
~/novice.4th:649: warning: redefined NIL with nil
~/novice.4th:782: warning: redefined concat
~/novice.4th:793: warning: redefined ,"
~/novice.4th:863: warning: redefined field
~/novice.4th:963: warning: redefined {
~/novice.4th:1033: warning: redefined Defer with defer
~/novice.4th:1041: warning: redefined IS with is
~/novice.4th:1243: warning: redefined d-
~/novice.4th:1431: warning: redefined b.
~/novice.4th:1490: warning: redefined s"
~/novice.4th:1497: warning: redefined C" with c"
~/novice.4th:1518: warning: redefined 2nip
~/novice.4th:1533: warning: redefined fnip
~/novice.4th:1572: warning: redefined f>=
~/novice.4th:1606: warning: redefined 0>=
~/novice.4th:1609: warning: redefined ftuck
~/novice.4th:1612: warning: redefined f0>=
~/novice.4th:1615: warning: redefined f2*
~/novice.4th:1618: warning: redefined f2/
~/novice.4th:1651: warning: redefined fsinh
~/novice.4th:1655: warning: redefined fcosh
~/novice.4th:1658: warning: redefined ftanh
~/novice.4th:1661: warning: redefined pi
~/skrewice.fs:5: warning: redefined w

Hmmm.. pardon, what was the question?

Anyway the same can happen without issuing a warning, for example when
it's the name of a local variable that clashes, or when there was a
change in the search order.

No, it's this crappy workaround that needed to go, the clearest sign of
which being that apparently Hugh fixed it now right away, after
announcing he wouldn't.

> Forthers typically write their own code and knowing what's in it avoid
> potential problems.  Use another's code blindly and the responsibility
> is all yours.

Sure, but this is supposed to be used by "novices" that can hardly write
their own code, let alone evaluate someone elses voluminous code for
potential pitfalls, right?

[toc] | [prev] | [next] | [standalone]


#53575

Fromhughaguilar96@gmail.com
Date2016-12-27 22:37 -0800
Message-ID<0519177b-3922-42f2-931c-77b0ba444532@googlegroups.com>
In reply to#53574
On Tuesday, December 27, 2016 at 9:39:35 PM UTC-7, Alexander Wegel wrote:
> I think that now with the finally-fixed-binding, the whole thing will
> become a magnitude less ugly - which doesn't say a lot, just look at a
> monster like this:
> 
> see exchange
> 
> : exchange  
>   s\" ( adrX adrY size -- )   \\ the size of the record must be a
> multiple of W
>   " evaluate s\"     begin  dup while                    \\ -- adrX adrY
> remain
>   ing" evaluate s\"         over @  fourth @                \\ -- adrX
> adrY rem
>   aining Y X" evaluate s\"         fourth !  fourth !              \\ --
> adrX a
>   drY remaining" evaluate s\"         rot w +  rot w +  rot w -  "
> evaluate 
>   s\"         repeat" evaluate s\"     3drop " evaluate ; immediate

You're purposely obfuscating my code by inserting line-breaks at random places --- it won't even compile when the words are broken like that --- you are a very dishonest person!

This is my EXCHANGE function as I wrote it:

SwiftForth? [if]

icode exchange ( adrX adrY size -- )    \ the size of the record must be a multiple of W
    0 [ebp] eax mov  w [ebp] ecx mov    \ EAX<>ECX, with EBX being the size
    begin  non-zero? while
        0 [eax] push
        0 [ecx] edx mov  edx 0 [eax] mov
        0 [ecx] pop
        w # eax add  w # ecx add
        w # ebx sub  repeat
    w 2 * [ebp] ebx mov
    w 3 * # ebp add  ret end-code

[else]

macro: exchange ( adrX adrY size -- )   \ the size of the record must be a multiple of W
    begin  dup while                    \ -- adrX adrY remaining
        over @  fourth @                \ -- adrX adrY remaining Y X
        fourth !  fourth !              \ -- adrX adrY remaining
        rot w +  rot w +  rot w -
        repeat
    3drop ;

[then]

I wrote multiple versions of EXCHANGE and compared the generated code to determine which would be the fastest --- VFX seems to prefer stack-juggling to using the return-stack, and even more so to using local variables --- that is why this version made the cut.

\ If FIELD is used to define records, the size of the records will be a multiple of W, as required by EXCHANGE.

> > As for your
> > experience, the system informed you (or should have) that a redefinition
> > had taken place.  If you ignored it whose fault was that?
> 
> ~/novice.4th:208: warning: redefined macro:
> ~/novice.4th:226: warning: redefined rdrop
> ~/novice.4th:229: warning: redefined 2rdrop
> ~/novice.4th:295: warning: redefined aligned
> ~/novice.4th:306: warning: redefined align
> ~/novice.4th:404: warning: redefined +,
> ~/novice.4th:449: warning: redefined lit,
> ~/novice.4th:483: warning: redefined allocate
> ~/novice.4th:513: warning: redefined resize
> ~/novice.4th:518: warning: redefined free
> ~/novice.4th:549: warning: redefined bounds
> ~/novice.4th:554: warning: redefined try
> ~/novice.4th:577: warning: redefined s>f
> ~/novice.4th:602: warning: redefined <=
> ~/novice.4th:606: warning: redefined >=
> ~/novice.4th:610: warning: redefined u>=
> ~/novice.4th:619: warning: redefined d>=
> ~/novice.4th:623: warning: redefined d<=
> ~/novice.4th:627: warning: redefined d>
> ~/novice.4th:631: warning: redefined 2tuck
> ~/novice.4th:649: warning: redefined NIL with nil
> ~/novice.4th:782: warning: redefined concat
> ~/novice.4th:793: warning: redefined ,"
> ~/novice.4th:863: warning: redefined field
> ~/novice.4th:963: warning: redefined {
> ~/novice.4th:1033: warning: redefined Defer with defer
> ~/novice.4th:1041: warning: redefined IS with is
> ~/novice.4th:1243: warning: redefined d-
> ~/novice.4th:1431: warning: redefined b.
> ~/novice.4th:1490: warning: redefined s"
> ~/novice.4th:1497: warning: redefined C" with c"
> ~/novice.4th:1518: warning: redefined 2nip
> ~/novice.4th:1533: warning: redefined fnip
> ~/novice.4th:1572: warning: redefined f>=
> ~/novice.4th:1606: warning: redefined 0>=
> ~/novice.4th:1609: warning: redefined ftuck
> ~/novice.4th:1612: warning: redefined f0>=
> ~/novice.4th:1615: warning: redefined f2*
> ~/novice.4th:1618: warning: redefined f2/
> ~/novice.4th:1651: warning: redefined fsinh
> ~/novice.4th:1655: warning: redefined fcosh
> ~/novice.4th:1658: warning: redefined ftanh
> ~/novice.4th:1661: warning: redefined pi
> ~/skrewice.fs:5: warning: redefined w
> 
> Hmmm.. pardon, what was the question?

The redefinitions in NOVICE.4TH are irrelevant because the user isn't making modifications to NOVICE.4TH --- the user is writing his own source-file --- there shouldn't be any redefinition warnings when he compiles his own source-file, and if there is then he should fix that potential bug that he has introduced.

In UR/Forth, when I wrote MFX, I had code (written in assembly-language using carnal knowledge of UR/Forth) in which each file was treated as a module. The word LOCAL could be put after a definition and it would mark that definition as smudge-ready. The word END-MODULE was put at the end of the file and it would traverse the entire dictionary to find smudge-ready words --- for each, it would turn off the smudge-ready flag and turn on the smudge flag --- so all the words local to that module disappeared from the search. This system helps a lot with preventing name-space pollution --- only the API words in the module are exposed --- it is possible to use generic names such as SIZE and LIMIT in multiple modules and not get redefinition warnings because they are local to each module. This also is self-documenting because a person reading the source-code for the module can focus on learning the words that are not local (and hence must be the API) and not waste time on learning words that aren't really useful to him but were just factored out to help the original programmer (me) test the module.

> Anyway the same can happen without issuing a warning, for example when
> it's the name of a local variable that clashes, or when there was a
> change in the search order.
> 
> No, it's this crappy workaround that needed to go, the clearest sign of
> which being that apparently Hugh fixed it now right away, after
> announcing he wouldn't.

It turned out to be easier than I expected --- I can't always predict the difficulty level of code until I delve into it --- I had expected this to be a bear, but it was pretty straight-forward and I had it done in one day.

[toc] | [prev] | [next] | [standalone]


#53584

Fromcrc <charles.childers@gmail.com>
Date2016-12-28 05:40 -0800
Message-ID<63268eba-0666-468a-8d40-e83c546a88ca@googlegroups.com>
In reply to#53575
On Wednesday, December 28, 2016 at 1:37:05 AM UTC-5, hughag...@gmail.com wrote:
> On Tuesday, December 27, 2016 at 9:39:35 PM UTC-7, Alexander Wegel wrote:
> > I think that now with the finally-fixed-binding, the whole thing will
> > become a magnitude less ugly - which doesn't say a lot, just look at a
> > monster like this:
> > 
> > see exchange
> > 
> > : exchange  
> >   s\" ( adrX adrY size -- )   \\ the size of the record must be a
> > multiple of W
> >   " evaluate s\"     begin  dup while                    \\ -- adrX adrY
> > remain
> >   ing" evaluate s\"         over @  fourth @                \\ -- adrX
> > adrY rem
> >   aining Y X" evaluate s\"         fourth !  fourth !              \\ --
> > adrX a
> >   drY remaining" evaluate s\"         rot w +  rot w +  rot w -  "
> > evaluate 
> >   s\"         repeat" evaluate s\"     3drop " evaluate ; immediate
> 
> You're purposely obfuscating my code by inserting line-breaks at random places --- it won't even compile when the words are broken like that --- you are a very dishonest person!

I see almost identical output when using 'see' under gforth.

[toc] | [prev] | [next] | [standalone]


#53595

Fromhughaguilar96@gmail.com
Date2016-12-28 23:03 -0800
Message-ID<3a054284-1701-41a1-86c7-04cd6a7f1cbb@googlegroups.com>
In reply to#53584
On Wednesday, December 28, 2016 at 6:40:01 AM UTC-7, crc wrote:
> On Wednesday, December 28, 2016 at 1:37:05 AM UTC-5, hughag...@gmail.com wrote:
> > On Tuesday, December 27, 2016 at 9:39:35 PM UTC-7, Alexander Wegel wrote:
> > > I think that now with the finally-fixed-binding, the whole thing will
> > > become a magnitude less ugly - which doesn't say a lot, just look at a
> > > monster like this:
> > > 
> > > see exchange
> > > 
> > > : exchange  
> > >   s\" ( adrX adrY size -- )   \\ the size of the record must be a
> > > multiple of W
> > >   " evaluate s\"     begin  dup while                    \\ -- adrX adrY
> > > remain
> > >   ing" evaluate s\"         over @  fourth @                \\ -- adrX
> > > adrY rem
> > >   aining Y X" evaluate s\"         fourth !  fourth !              \\ --
> > > adrX a
> > >   drY remaining" evaluate s\"         rot w +  rot w +  rot w -  "
> > > evaluate 
> > >   s\"         repeat" evaluate s\"     3drop " evaluate ; immediate
> > 
> > You're purposely obfuscating my code by inserting line-breaks at random places --- it won't even compile when the words are broken like that --- you are a very dishonest person!
> 
> I see almost identical output when using 'see' under gforth.

Well, then, maybe Gforth's SEE has a bug in it? Do ya think???

ANS-Forth is a cult! Your software isn't any good! You blame people like me for this --- here we have Alex Wegel calling my code "ugly" and a "monster" --- all of the loyal cult members nod sagely...

My novice-package is in the public-domain. He must have downloaded it and compiled it, so he has the source-code --- why not post the source-code? --- why post this garbled mess that Gforth's SEE generates?

This, once again, is my source-code:

macro: exchange ( adrX adrY size -- )   \ the size of the record must be a multiple of W
    begin  dup while                    \ -- adrX adrY remaining
        over @  fourth @                \ -- adrX adrY remaining Y X
        fourth !  fourth !              \ -- adrX adrY remaining
        rot w +  rot w +  rot w -
        repeat
    3drop ;

EXCHANGE is one of my better-written functions. Alex Wegel has obviously spent only one minute looking at my novice-package, or he would have found some functions that really are ugly monsters (like <6ARRAY> for example, which has now been obsoleted by <ARY> that is much less ugly and monstrous).

The entire minute that Alex Wegel did invest, was spent entirely focused on finding something that he could complain about. This thread reminds me of another one:
https://groups.google.com/forum/#!searchin/comp.lang.forth/lc53%7Csort:relevance/comp.lang.forth/qqlp1gZnVic/kjeAwWCaR1MJ

ANS-Forth is a cult! Elizabeth Rather is a pathological liar. She has made a career out of claiming that her association with Charles Moore in the 1970s makes her our "leading expert" forever, and she has never posted any code on comp.lang.forth that she didn't copy directly out of the "Starting Forth" book (all of that code presumably was written by Charles Moore). She attracts jerks --- Alex Wegel, Alex McDonald, John Passaniti, Julien Fondren, Rickman... --- and, lets not forget Bernd Paysan and Andrew Haley, who she appointed to the Forth-200x committee.

I said previously that I wasn't going to bother to write an early-binding version of MACRO:

On Friday, December 23, 2016 at 7:22:33 PM UTC-7, hughag...@gmail.com wrote:
> So, the disambiguifiers are well known --- my only contribution was the catchy "disambiguifier" name --- but everybody hates the word "disambiguifier" because it shines a spotlight on the fact that ANS-Forth is ambiguous.
> 
> Getting back to Alex Wegel's criticism of my MACRO: using late-binding --- now that I have the disambiguifiers I could theoretically rewrite MACRO: to use early-binding.
> 
> I'm not going to do that this upcoming release of the novice package (most likely this weekend). I may not do it at all. It is pointless for me to program in ANS-Forth when I can't ever become an ANS-Forth programmer --- no matter what I do, one or the other Alex will say that it is "crap."
> 
> Programming in ANS-Forth is a waste of time --- I need to just focus on getting Straight Forth implemented --- ANS-Forth needs to be flushed; it is a hopeless mess of ambiguity and idiocy.
> 
> Straight Forth doesn't need disambiguifiers because it is not ambiguous.

My MACRO: is somewhat complicated --- I have POSTPONE of words that themselves do a POSTPONE of another word --- I consider that to be at least intermediate-level Forth programming. A much simpler technique is to just compile the word like normal, then hold on to the generated executable code, which can later be pasted into the code being generated. This is how inlining was done in most of the Forth-83 systems. This is how "optimization" is done in SwiftForth with its ICODE words. This works so long as the code is relocatable, and Charles Moore defined BRANCH and 0BRANCH to use relative offsets, so he was obviously aware of this inlining technique way back in the 1970s when he invented Forth.

When I said previously that I didn't need to write an early-binding MACRO: for ANS-Forth because it wasn't needed for Straight Forth, I was assuming that I would use this ancient technique for inlining instead, so I wouldn't need the complicated jumble of POSTPONE that is needed in ANS-Forth. Now, however, I realize that my early-binding MACRO: that I just wrote may actually have to be used in Straight Forth in order to support macros such as this:
----------------------------------------------------------------------------

SwiftForth? [if]

icode next>r ( node -- node )                   \ r: -- next-node
    0 [ebx] push
    ret end-code

[else]

macro: next>r ( node -- node )                  \ r: -- next-node
    dup .fore @ >r ;

[then]

macro: each[                                    \ toucher: i*x node -- j*x
    begin  dup while
        next>r ;

macro: ]each
        r> repeat drop ;

----------------------------------------------------------------------------

So, writing the early-binding version of MACRO: wasn't a total waste of time. Posting the code on comp.lang.forth was arguably a waste of time though --- none of the ANS-Forth "programmers" are interested --- stirring up the ANS-Forth cult is like poking a hornets nest with a stick; nothing good comes of this...

[toc] | [prev] | [next] | [standalone]


#53619

Fromawegel@arcor.de (Alexander Wegel)
Date2016-12-30 20:54 +0100
Message-ID<1mz1rzv.whl5u1ptwnbuN%awegel@arcor.de>
In reply to#53595
<hughaguilar96@gmail.com> wrote:

> On Wednesday, December 28, 2016 at 6:40:01 AM UTC-7, crc wrote:
> > On Wednesday, December 28, 2016 at 1:37:05 AM UTC-5, hughag...@gmail.com wr
> > > On Tuesday, December 27, 2016 at 9:39:35 PM UTC-7, Alexander Wegel wrote:
> > > > I think that now with the finally-fixed-binding, the whole thing will
> > > > become a magnitude less ugly - which doesn't say a lot, just look at a
> > > > monster like this:
> > > > 
> > > > see exchange
> > > > 
> > > > : exchange  
> > > >   s\" ( adrX adrY size -- )   \\ the size of the record must be a
> > > > multiple of W
> > > >   " evaluate s\"     begin  dup while                    \\ -- adrX adrY
> > > > remain
> > > >   ing" evaluate s\"         over @  fourth @                \\ -- adrX
> > > > adrY rem
> > > >   aining Y X" evaluate s\"         fourth !  fourth !              \\ --
> > > > adrX a
> > > >   drY remaining" evaluate s\"         rot w +  rot w +  rot w -  "
> > > > evaluate 
> > > >   s\"         repeat" evaluate s\"     3drop " evaluate ; immediate
> > > 
> > > You're purposely obfuscating my code by inserting line-breaks at random
> > > places --- it won't even compile when the words are broken like that ---

Line-breaks is something you obviously don't know anything about: I had to break
the lines of your post for you.

> > > you are a very dishonest person!

Had some trumps for breakfast?

> > I see almost identical output when using 'see' under gforth.
> 
> Well, then, maybe Gforth's SEE has a bug in it? Do ya think???

The line-breaks get deleted by your "macro:", because it works line-by-line. If
you really want to call this a bug, then it's yours alone.

> This, once again, is my source-code:
>
> macro: exchange ( adrX adrY size -- )   \ the size of the record must be a mul
>                                           tiple of W
>     begin  dup while                    \ -- adrX adrY remaining
>         over @  fourth @                \ -- adrX adrY remaining Y X
>         fourth !  fourth !              \ -- adrX adrY remaining
>         rot w +  rot w +  rot w -
>         repeat
>     3drop ;
> 
> EXCHANGE is one of my better-written functions. 

The definition itself is a bit clumsy (with all those "fourth"s and the
juggling), but passable.

Though, defining it as a macro didn't make it run faster by any measure, but
bloated both the definition of exchange itself (stored string literals, even
including the comments), and its users (by compiling the whole loop into their
body).
Additionally it broke its interpretation/execution semantics: now it's
impossible to use exchange interpretively or to execute its xt in interpretation
state.

So why the hell did you make this a macro? Speed gain? Size gain? Secret powers
of late-binding? More compile time?

> Alex Wegel has obviously spent only one minute looking at my novice-package,
> or he would have found some functions that really are ugly monsters
> (like <6ARRAY> for example, which has now been obsoleted by <ARY> that
> is much less ugly and monstrous).

I don't really want to find *all* the monsters, bears or platypusses that lurk
in your package, surely not this year.

> ANS-Forth is a cult! Elizabeth Rather is a pathological liar.

Why don't you use capital letters for this - it looks much louder then.
You don't realize that it's you who lies routinely, do you? How about a lying
break?

> She attracts jerks

Like you? Please cut the crap.

> I said previously that I wasn't going to bother to write an early-binding
> version of MACRO:

Happy to have "convinced" you of the opposite.

[toc] | [prev] | [next] | [standalone]


#53676

FromCoos Haak <htrofhc@gmail.com>
Date2017-01-02 20:17 +0100
Message-ID<6g4x8qb9nps7.suad71m3wuz3.dlg@40tude.net>
In reply to#53619
Op Fri, 30 Dec 2016 20:54:10 +0100 schreef Alexander Wegel:

> <hughaguilar96@gmail.com> wrote:
>> This, once again, is my source-code:
>>
>> macro: exchange ( adrX adrY size -- )   \ the size of the record must be a mul
>>                                           tiple of W
>>     begin  dup while                    \ -- adrX adrY remaining
>>         over @  fourth @                \ -- adrX adrY remaining Y X
>>         fourth !  fourth !              \ -- adrX adrY remaining
>>         rot w +  rot w +  rot w -
>>         repeat
>>     3drop ;
>> 
>> EXCHANGE is one of my better-written functions. 
> 
> The definition itself is a bit clumsy (with all those "fourth"s and the
> juggling), but passable.

It surely is clumsy. He can't program in Forth.

: exchange   ( addr1 addr2 size -- )
   begin dup
   while >r 2dup over @ over @ >r swap ! r> swap !
         cell+ swap cell+ swap r> 1+
   repeat
   drop 2drop ;

No ROT no FOURTH no MACRO
All standard Forth. No words invented by some taxidriver.

groet Coos

[toc] | [prev] | [next] | [standalone]


#53677

Frommhx@iae.nl
Date2017-01-02 12:22 -0800
Message-ID<7a001578-9636-48b6-b5cc-bd21cdcea51d@googlegroups.com>
In reply to#53676
On Monday, January 2, 2017 at 8:17:33 PM UTC+1, Coos Haak wrote:
[..]
> >> macro: exchange ( adrX adrY size -- )   \ the size of the record must
> >>                                         \ be a multiple of W
> >>     begin  dup while                    \ -- adrX adrY remaining
> >>         over @  fourth @                \ -- adrX adrY remaining Y X
> >>         fourth !  fourth !              \ -- adrX adrY remaining
> >>         rot w +  rot w +  rot w -
> >>         repeat
> >>     3drop ;
[..]
> It surely is clumsy. He can't program in Forth.
>
> : exchange   ( addr1 addr2 size -- )
>    begin dup
>    while >r 2dup over @ over @ >r swap ! r> swap !
>          cell+ swap cell+ swap r> 1+
>    repeat
>    drop 2drop ;
>
> No ROT no FOURTH no MACRO
> All standard Forth. No words invented by some taxidriver.
>
> groet Coos

And not too bad with an ancient compiler:

FORTH> : tex $1000 $2000 3 exchange .s ;  ok
FORTH> see tex
Flags: ANSI
$01324E00  : tex
$01324E0A  push          $00001000 d#
$01324E0F  mov           rcx, $00002000 d#
$01324E16  mov           rbx, 3 d#
$01324E1D  mov           rax, rax
$01324E20  cmp           rbx, 0 b#
$01324E24  push          rcx
$01324E25  je            $01324E4D offset NEAR
$01324E2B  pop           rdi
$01324E2C  pop           rax
$01324E2D  mov           rdx, [rax] qword
$01324E30  mov           r9, [rdi] qword
$01324E33  mov           [edi] dword, rdx
$01324E36  mov           [rax] qword, r9
$01324E39  lea           rax, [rax 8 +] qword
$01324E3D  push          rax
$01324E3E  lea           rdi, [rdi 8 +] qword
$01324E42  push          rdi
$01324E43  lea           rbx, [rbx 1 +] qword
$01324E47  pop           rcx
$01324E48  jmp           $01324E20 offset SHORT
$01324E4A  push          rcx
$01324E4B  push          rbx
$01324E4C  pop           rbx
$01324E4D  pop           rbx
$01324E4E  pop           rdi
$01324E4F  jmp           .S+10 ( $012AC522 ) offset NEAR
$01324E54  ;

-marcel

[toc] | [prev] | [next] | [standalone]


#53678

Fromawegel@arcor.de (Alexander Wegel)
Date2017-01-02 22:08 +0100
Message-ID<1mz8tjw.1g1556o8joll6N%awegel@arcor.de>
In reply to#53676
Coos Haak <htrofhc@gmail.com> wrote:

> Op Fri, 30 Dec 2016 20:54:10 +0100 schreef Alexander Wegel:
> 
> > <hughaguilar96@gmail.com> wrote:
> >> This, once again, is my source-code:
> >>
> >> macro: exchange ( adrX adrY size -- )   \ the size of the record mu..
> >>                                           tiple of W
> >>     begin  dup while                    \ -- adrX adrY remaining
> >>         over @  fourth @                \ -- adrX adrY remaining Y X
> >>         fourth !  fourth !              \ -- adrX adrY remaining
> >>         rot w +  rot w +  rot w -
> >>         repeat
> >>     3drop ;
> >> 
> >> EXCHANGE is one of my better-written functions. 
> > 
> > The definition itself is a bit clumsy (with all those "fourth"s and the
> > juggling), but passable.f
> 
> It surely is clumsy. He can't program in Forth.
> 
> : exchange   ( addr1 addr2 size -- )
>    begin dup
>    while >r 2dup over @ over @ >r swap ! r> swap !
>          cell+ swap cell+ swap r> 1+
>    repeat
>    drop 2drop ;

Well, the 1+ is a bug. A fix would either be:

: exchange   ( addr1 addr2 size -- )
   begin dup
   while >r 2dup over @ over @ >r swap ! r> swap !
         cell+ swap cell+ swap r> 1-
   repeat
   drop 2drop ;

or (to keep using a potentially fast 1+):

: exchange   ( addr1 addr2 size -- )
   negate begin dup
   while >r 2dup over @ over @ >r swap ! r> swap !
         cell+ swap cell+ swap r> 1+
   repeat
   drop 2drop ;

(BTW: A "plug-in" compatible version would use cell+)

> No ROT no FOURTH no MACRO

My own take (with better use of forth control structures) is:

: exchange ( a1 a2 u -- )
  bounds ?do
    i @ over @
    i ! over !
    cell +
  cell +loop drop
;

But anyway - when you know the size of the block to be moved
at compile time, and the block is small (one or a few cells),
having any kind of loop is overkill already.

I wrote a benchmark program to roughly measure various versions
of exchange (including yours now). It's attached below (including
the results) and demonstrates that
- inlining didn't help
- vfx optimizes a lot away
- your version is roughly as fast as hughs :)

1 cells constant w

: exchange-ha  \ Hughs version (as generated by his macro: word)
  s" ( adrX adrY size -- )      \ ..." evaluate
  s"     begin  dup while       \ -- adrX adrY remaining" evaluate
  s"         over @  3 pick @   \ -- adrX adrY remaining Y X" evaluate
  s"         3 pick !  3 pick ! \ -- adrX adrY remaining" evaluate
  s"         rot w +  rot w +  rot w -  " evaluate
  s"         repeat" evaluate
  s"     2drop drop " evaluate
; immediate

: exchange-call  \ Hughs version, not inlined
  ( adrX adrY size -- )   \ the size of the record must be a multiple of
W
      begin  dup while                    \ -- adrX adrY remaining
          over @  3 pick @                \ -- adrX adrY remaining Y X
          3 pick !  3 pick !              \ -- adrX adrY remaining
          rot w +  rot w +  rot w -
          repeat
      2drop drop
;

: exchange-aw ( a1 a2 u -- )  \ my version
  bounds ?do
    i @ over @
    i ! over !
    cell +
  cell +loop drop
;

\ some non-looping versions for fixed sizes
: exch1 ( a1 a2 -- ) 2dup 2>r @ swap @ r> ! r> ! ;
: exch2 ( a1 a2 -- ) 2dup 2>r 2@ rot 2@ r> 2! r> 2! ;
: exch4 ( a1 a2 -- ) 2dup [ w 2* dup ] 2literal d+ exch2 exch2 ;

\ version using the single-word exch1 from above
: exch1a ( a1 a2 u -- ) bounds do dup i exch1 w + w +loop drop ; 

\ similar, using begin..until
: exch1b ( a1 a2 u -- )
  begin >r
    2dup >r >r exch1
    r> w + r> w +
    r> w - dup 0=
  until drop 2drop ; 

\ similar, but using a small trick for incrementing addresses
: exch1c ( a1 a2 u -- )
  begin >r
    2dup exch1
    [ w w ] 2literal d+
    r> w - dup 0=
  until drop 2drop ; 

\ version for exchanging multiples of four cells
\ (could be extended to work for any size by adding another
\ loop that handles remaining 1-3 cells):
: exch4a ( a1 a2 u -- )
  [ w 4 * ] literal /
  0 ?do
    2dup exch4
    [ w 4 * dup ] 2literal d+
  loop 2drop
;

\ version by coos haak (slightly adapted for compat.)
: exchange-coos   ( addr1 addr2 size -- )
   negate begin dup
   while >r 2dup over @ over @ >r swap ! r> swap !
         cell+ swap cell+ swap r> cell+
   repeat
   drop 2drop ;

\ the test procs

create a 256 cells allot
create b 256 cells allot
w value n
1000000 value m

: t-0      m 0 do a b n 2drop drop loop ;         
: t-exch1  m 0 do a b exch1 loop ;         
: t-exch2  m 0 do a b exch2 loop ;         
: t-exch4  m 0 do a b exch4 loop ;         
: t-exch4a m 0 do a b n exch4a loop ;      
: t-exch1a m 0 do a b n exch1a loop ;      
: t-exch1b m 0 do a b n exch1b loop ;      
: t-exch1c m 0 do a b n exch1c loop ;      
: t-ha     m 0 do a b n exchange-ha loop ;    
: t-call   m 0 do a b n exchange-call loop ;
: t-aw     m 0 do a b n exchange-aw loop ; 
: t-coos   m 0 do a b n exchange-coos loop ; 

\ ticks counts in millisecs (vfx)
[undefined] ticks [if] : ticks utime 1000 um/mod nip ; [then]

\ benchmarking functions

: t. 1000000 m */ . ." ns " ;
\ : .name >name .id space ;
: timex ticks >r execute ticks r> - ;
: meas dup >r timex r@ timex min r> timex min ;
: t dup cr >name .name meas t. ;
: ttbl: begin ['] ' catch 0= while t repeat cr ;

\ the benchmarks

cr .( exchange 1 word)
w to n 
ttbl: t-0  t-ha t-call t-aw t-exch1a t-exch1b t-exch1c t-exch1 t-coos

cr .( exchange 2 words)
w 2 * to n 
ttbl: t-0 t-ha t-call t-aw t-exch1a t-exch1b t-exch1c t-exch2 t-coos

cr .( exchange 4 words)
w 4 * to n 
ttbl: t-0 t-ha t-call t-aw t-exch1a t-exch1b t-exch1c t-exch4a t-exch4
t-coos

cr .( exchange 256 words)
100000 to m
w 256 * to n 
ttbl: t-0 t-ha t-call t-aw t-exch1a t-exch1b t-exch1c t-exch4a t-coos

cr

?csp

\ machine: macmini i5-3210m @ 2.5GHz
\ 
\ gforth-fast:
\  
\ exchange 1 word
\ t-0 12 ns 
\ t-ha 40 ns 
\ t-call 40 ns 
\ t-aw 32 ns 
\ t-exch1a 36 ns 
\ t-exch1b 48 ns 
\ t-exch1c 42 ns 
\ t-exch1 18 ns 
\ t-coos 37 ns 
\ 
\ exchange 2 words
\ t-0 12 ns 
\ t-ha 64 ns 
\ t-call 63 ns 
\ t-aw 48 ns 
\ t-exch1a 58 ns 
\ t-exch1b 91 ns 
\ t-exch1c 76 ns 
\ t-exch2 22 ns 
\ t-coos 64 ns 
\ 
\ exchange 4 words
\ t-0 13 ns 
\ t-ha 117 ns 
\ t-call 114 ns 
\ t-aw 81 ns 
\ t-exch1a 97 ns 
\ t-exch1b 162 ns 
\ t-exch1c 136 ns 
\ t-exch4a 88 ns 
\ t-exch4 56 ns 
\ t-coos 104 ns 
\ 
\ exchange 256 words
\ t-0 20 ns 
\ t-ha 6330 ns 
\ t-call 6190 ns 
\ t-aw 4390 ns 
\ t-exch1a 5430 ns 
\ t-exch1b 9840 ns 
\ t-exch1c 8250 ns 
\ t-exch4a 4020 ns 
\ t-coos 5910 ns 
\
\ vfx-win:
\ 
\ exchange 1 word
\ T-0 2 ns 
\ T-HA 4 ns 
\ T-CALL 3 ns 
\ T-AW 4 ns 
\ T-EXCH1A 4 ns 
\ T-EXCH1B 5 ns 
\ T-EXCH1C 5 ns 
\ T-EXCH1 2 ns 
\ T-COOS 4 ns 
\ 
\ exchange 2 words
\ T-0 2 ns 
\ T-HA 7 ns 
\ T-CALL 7 ns 
\ T-AW 5 ns 
\ T-EXCH1A 7 ns 
\ T-EXCH1B 10 ns 
\ T-EXCH1C 8 ns 
\ T-EXCH2 5 ns 
\ T-COOS 7 ns 
\ 
\ exchange 4 words
\ T-0 2 ns 
\ T-HA 12 ns 
\ T-CALL 13 ns 
\ T-AW 10 ns 
\ T-EXCH1A 13 ns 
\ T-EXCH1B 18 ns 
\ T-EXCH1C 15 ns 
\ T-EXCH4A 15 ns 
\ T-EXCH4 10 ns 
\ T-COOS 14 ns 
\ 
\ exchange 256 words
\ T-0 0 ns 
\ T-HA 800 ns 
\ T-CALL 780 ns 
\ T-AW 680 ns 
\ T-EXCH1A 690 ns 
\ T-EXCH1B 1090 ns 
\ T-EXCH1C 930 ns 
\ T-EXCH4A 780 ns 
\ T-COOS 800 ns 

[toc] | [prev] | [next] | [standalone]


Page 1 of 14  [1] 2 3 … 14  Next page →

Back to top | Article view | comp.lang.forth


csiph-web