Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #52555
| From | anton@mips.complang.tuwien.ac.at (Anton Ertl) |
|---|---|
| Newsgroups | comp.lang.forth |
| Subject | Re: Average swaps per word? |
| Date | 2016-11-12 13:25 +0000 |
| Organization | Institut fuer Computersprachen, Technische Universitaet Wien |
| Message-ID | <2016Nov12.142535@mips.complang.tuwien.ac.at> (permalink) |
| References | (6 earlier) <PoudnbA3WJT5X7nFnZ2dnUU7-bWdnZ2d@supernews.com> <o02p1l$k4a$1@dont-email.me> <A8WdnaCjJYGjuLjFnZ2dnUU7-KnNnZ2d@supernews.com> <o03aed$d47$1@dont-email.me> <8s-dnR_w-rIlFLjFnZ2dnUU7-dfNnZ2d@supernews.com> |
Andrew Haley <andrew29@littlepinkcloud.invalid> writes:
>rickman <gnuarm@gmail.com> wrote:
>I'd like to stress Elizabeth's point about not thinking about the
>stack. An experienced reader of a Forth program doesn't think about
>the stack all the time, but about phrases and the flow of code. Until
>they hit some incomprehensible spaghetti like
>
> 2dup 4 pick 1- recurse >r \ z'
> dup 2over 1- recurse >r \ y'
> 1- recurse
> 2r> rot
>
>which I ssuspect no Forth programmer, however experienced, could
>understand without resorting to drawing stack diagrams. [I intend no
>offence to Anton Ertl, the author of this code: it's a
>highly-contrived example meant to illustrate a point.] But even if
>this code is written in an "algebraic" notation it's hard to
>understand what it does.
That's because it does nothing useful. Still, the locals version is
the one that's clearest to me, with the version below making the
symmetry in the calls most obvious.
: tak1 ( z y x -- z y x r )
2dup < if
1- recurse >r 1+ -rot ( x z y )
1- recurse >r 1+ -rot ( y x z )
1- recurse >r 1+ -rot ( z y x )
r> r> r> recurse nip nip nip
else
2 pick
then ;
Let's see if we can get that property with a more idiomatic stack effect:
: tak1a ( z y x -- r )
begin
2dup < while
3dup 1- recurse >r -rot
3dup 1- recurse >r -rot
1- recurse
r> r> repeat
2drop ;
With : 3dup dup 2over rot ; this gives the following timings:
3dup-builtin 3dup-2pick locals tak1 tak2 tak1a
gforth 1160859139 1023792580 816129237 633233631 859610716
sf 472184708 533401690 4529954652 356164897 253178697 423469455
vfxlin 490283220 401685949 700320112 352936074 238431403 305372513
BTW, did you already present your go at coding TAK?
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: http://www.forth200x.org/forth200x.html
EuroForth 2016: http://www.euroforth.org/ef16/
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Average swaps per word? trans <transfire@gmail.com> - 2016-11-08 22:03 -0800
Re: Average swaps per word? "Elizabeth D. Rather" <erather@forth.com> - 2016-11-08 20:20 -1000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-09 08:16 +0000
Re: Average swaps per word? Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2016-11-09 03:34 -0500
Re: Average swaps per word? trans <transfire@gmail.com> - 2016-11-09 02:53 -0800
Re: Average swaps per word? rickman <gnuarm@gmail.com> - 2016-11-09 11:50 -0500
Re: Average swaps per word? stephen@mpeforth.com (Stephen Pelc) - 2016-11-09 18:37 +0000
Re: Average swaps per word? Harold <hzrabbie@gmail.com> - 2016-11-10 16:28 -0800
Re: Average swaps per word? stephen@mpeforth.com (Stephen Pelc) - 2016-11-11 17:51 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-12 12:23 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-12 16:09 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-13 14:55 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-13 20:34 +0100
Re: Average swaps per word? Paul Rubin <no.email@nospam.invalid> - 2016-11-13 11:43 -0800
Re: Average swaps per word? hughaguilar96@gmail.com - 2016-11-13 16:58 -0800
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-14 16:41 +0100
Re: Average swaps per word? hughaguilar96@gmail.com - 2016-11-14 16:38 -0800
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-14 17:42 +0000
Re: Average swaps per word? Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2016-11-14 16:39 -0500
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 12:40 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-17 14:10 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-18 15:14 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-20 18:16 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-22 10:29 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-22 15:54 +0100
Re: Average swaps per word? James Kuyper <jameskuyper@verizon.net> - 2016-11-22 11:50 -0500
Re: Average swaps per word? raltbos@xs4all.nl (Richard Bos) - 2016-11-24 17:27 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-15 03:55 -0600
Re: Average swaps per word? Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2016-11-15 17:49 -0500
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-16 02:59 -0600
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 13:07 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-16 22:57 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-17 03:12 -0600
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-17 12:32 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-18 15:02 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 13:23 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-17 08:54 -0600
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-18 15:54 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-18 12:37 -0600
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-14 17:32 +0000
Re: Average swaps per word? Mark Wills <markwills1970@gmail.com> - 2016-11-15 02:09 -0800
Re: Average swaps per word? jim <anon@example.com> - 2016-11-15 10:44 +0000
Re: Average swaps per word? Mark Wills <markwills1970@gmail.com> - 2016-11-15 03:12 -0800
Re: Average swaps per word? Alex <alex@rivadpm.com> - 2016-11-15 13:01 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 12:51 +0000
Re: Average swaps per word? Alex <alex@rivadpm.com> - 2016-11-17 14:02 +0000
Re: Average swaps per word? Alex <alex@rivadpm.com> - 2016-11-17 14:06 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-18 15:26 +0000
Re: Average swaps per word? Alex <alex@rivadpm.com> - 2016-11-18 18:33 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-19 03:32 -0600
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-17 14:29 +0100
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-15 13:51 +0100
Re: Average swaps per word? jim <anon@example.com> - 2016-11-15 13:01 +0000
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 12:46 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-17 14:16 +0100
Re: Average swaps per word? Harold <hzrabbie@gmail.com> - 2016-11-13 11:08 -0800
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-14 17:08 +0000
Re: Average swaps per word? Mark Wills <markwills1970@gmail.com> - 2016-11-15 02:04 -0800
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-15 14:04 +0100
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-15 14:05 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-17 12:58 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-17 15:16 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-18 15:41 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-20 18:12 +0100
Re: Average swaps per word? minforth@arcor.de - 2016-11-09 03:15 -0800
Re: Average swaps per word? trans <transfire@gmail.com> - 2016-11-09 11:22 -0800
Re: Average swaps per word? "HAA" <someone@microsoft.com> - 2016-11-10 12:20 +1100
Re: Average swaps per word? "Elizabeth D. Rather" <erather@forth.com> - 2016-11-09 21:04 -1000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-10 03:45 -0600
Re: Average swaps per word? rickman <gnuarm@gmail.com> - 2016-11-10 11:52 -0500
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-10 11:42 -0600
Re: Average swaps per word? rickman <gnuarm@gmail.com> - 2016-11-10 13:34 -0500
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-10 12:54 -0600
Re: Average swaps per word? rickman <gnuarm@gmail.com> - 2016-11-10 16:33 -0500
Re: Average swaps per word? "Elizabeth D. Rather" <erather@forth.com> - 2016-11-10 15:56 -1000
Re: Average swaps per word? rickman <gnuarm@gmail.com> - 2016-11-10 21:30 -0500
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-11 03:04 -0600
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-12 13:25 +0000
Re: Average swaps per word? Andrew Haley <andrew29@littlepinkcloud.invalid> - 2016-11-14 03:34 -0600
Re: Average swaps per word? Gerry Jackson <gerry@jackson9000.fsnet.co.uk> - 2016-11-11 10:41 +0000
Re: Average swaps per word? hughaguilar96@gmail.com - 2016-11-11 16:45 -0800
Re: Average swaps per word? jim <anon@example.com> - 2016-11-10 11:17 +0000
Re: Average swaps per word? Raimond Dragomir <raimond.dragomir@gmail.com> - 2016-11-10 04:34 -0800
Re: Average swaps per word? jim <anon@example.com> - 2016-11-10 12:44 +0000
Re: Average swaps per word? Raimond Dragomir <raimond.dragomir@gmail.com> - 2016-11-10 07:27 -0800
Re: Average swaps per word? Ron Aaron <rambamist@gmail.com> - 2016-11-10 18:26 +0200
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-10 16:05 +0000
Re: Average swaps per word? stephen@mpeforth.com (Stephen Pelc) - 2016-11-10 14:55 +0000
Re: Average swaps per word? "HAA" <someone@microsoft.com> - 2016-11-12 11:36 +1100
Re: Average swaps per word? hughaguilar96@gmail.com - 2016-11-11 16:56 -0800
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-12 16:14 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-12 12:14 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-12 16:16 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-13 14:51 +0000
Re: Average swaps per word? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-13 20:41 +0100
Re: Average swaps per word? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-10 14:42 +0000
Re: Average swaps per word? hughaguilar96@gmail.com - 2016-11-11 15:54 -0800
csiph-web