Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!weretis.net!feeder4.news.weretis.net!feeder2.ecngs.de!ecngs!feeder.ecngs.de!Xl.tags.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!local2.nntp.ams.giganews.com!news.giganews.com.POSTED!not-for-mail NNTP-Posting-Date: Thu, 08 Nov 2012 14:17:37 -0600 From: Chris Hinsley Newsgroups: comp.lang.forth Date: Thu, 8 Nov 2012 20:17:37 +0000 Message-ID: <2012110820173759604-chrishinsley@gmailcom> References: <2012110713421835115-chrishinsley@gmailcom> <509bb9a2$0$6999$882e7ee2@usenet-news.net> <2012110814115169871-chrishinsley@gmailcom> <2012110814312086525-chrishinsley@gmailcom> <2012110814515560672-chrishinsley@gmailcom> <509bf899$0$19587$882e7ee2@usenet-news.net> <2012110820040689990-chrishinsley@gmailcom> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: Genral advise and comments on callback style words User-Agent: Unison/2.1.9 Lines: 45 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-BPqOSWz++wGLOBE3VcDn2LPEaGKGise+fJzVmY0x7FCHiGmGVykd+BHb66VpE3I9DaTXYdC6riQ5h5i!qpwfWn+u0Kazy1/c118Y4nfuuORABrqhkr96MZ8pFE+zJ2rDMusVjy6X5xEFo7lA9uUMXEw= X-Complaints-To: abuse@giganews.com X-DMCA-Notifications: http://www.giganews.com/info/dmca.html X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2825 Xref: csiph.com comp.lang.forth:17181 On 2012-11-08 20:04:06 +0000, Chris Hinsley said: > On 2012-11-08 18:23:21 +0000, Josh Grams said: > >> Chris Hinsley wrote: <2012110814515560672-chrishinsley@gmailcom> >>> On 2012-11-08 14:31:20 +0000, Chris Hinsley said: >>>>> Josh Grams wrote: >>>>>> >>>>>> : LISTHEAD-ENUMERATE-FORWARDS ( u xt lh -- ln | 0 ) >>>>>> TUCK SWAP 2>R >>>>>> LISTHEAD-GET-HEAD BEGIN >>>>>> 2DUP LISTNODE-GET-SUCC >>>>>> DUP WHILE >>>>>> 2R@ EXECUTE >>>>>> ?DUP UNTIL ELSE NIP THEN >>>>>> NIP NIP 2R> 2DROP ; >>>> >>>> Err, I'm not sure that works! You are skipping the first node. >> >> Yeah, sorry; I thought that's what your code was doing; see my response >> to your first reply to mine. >> >>>> Isn't the 2DUP also blowing up the stack with an extra copy of the >>>> original LH each time ? >>> >>> And it's not passing the user value into the callback at all ? >> >> In this case, EXECUTE is ( u ln lh xt -- ln | 0 ), right? So the 2DUP >> provides two of those four items, and the 2R@ provides the other two. >> >> : LISTHEAD-ENUMERATE-FORWARDS ( u xt lh -- ln | 0 ) >> TUCK SWAP 2>R LISTHEAD-GET-HEAD >> BEGIN DUP WHILE ( u ln ) ( R: lh xt ) >> 2DUP LISTNODE-GET-SUCC 2SWAP >> 2R@ EXECUTE >> ?DUP UNTIL THEN ( u ln ln|0 ) NIP NIP 2R> 2DROP ; >> >> --Josh Ah, no that crashes ! Reason is that you end up processing the end of list marker, ie the bottom two thirds of the listheader as if it was an actual node ! Nice try ! ;) Chris