Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #53455 > unrolled thread
| Started by | awegel@arcor.de (Alexander Wegel) |
|---|---|
| First post | 2016-12-21 01:19 +0100 |
| Last post | 2017-01-08 16:55 -0800 |
| Articles | 20 on this page of 266 — 26 participants |
Back to article view | Back to comp.lang.forth
"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 →
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | Andrew Haley <andrew29@littlepinkcloud.invalid> |
|---|---|
| Date | 2016-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]
| From | Julian Fondren <julian.fondren@gmail.com> |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | hughaguilar96@gmail.com |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | "HAA" <someone@microsoft.com> |
|---|---|
| Date | 2016-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]
| From | Paul Rubin <no.email@nospam.invalid> |
|---|---|
| Date | 2016-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]
| From | "HAA" <someone@microsoft.com> |
|---|---|
| Date | 2016-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]
| From | "Elizabeth D. Rather" <erather@forth.com> |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | hughaguilar96@gmail.com |
|---|---|
| Date | 2016-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]
| From | crc <charles.childers@gmail.com> |
|---|---|
| Date | 2016-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]
| From | hughaguilar96@gmail.com |
|---|---|
| Date | 2016-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2016-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]
| From | Coos Haak <htrofhc@gmail.com> |
|---|---|
| Date | 2017-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]
| From | mhx@iae.nl |
|---|---|
| Date | 2017-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]
| From | awegel@arcor.de (Alexander Wegel) |
|---|---|
| Date | 2017-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