Path: csiph.com!usenet.pasdenom.info!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 13:36:41 -0600 From: Chris Hinsley Newsgroups: comp.lang.forth Date: Thu, 8 Nov 2012 19:36:41 +0000 Message-ID: <2012110819364156347-chrishinsley@gmailcom> References: <2012110713421835115-chrishinsley@gmailcom> <509bb9a2$0$6999$882e7ee2@usenet-news.net> <201211081406178276-chrishinsley@gmailcom> <509bf42e$0$11653$882e7ee2@usenet-news.net> 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: 49 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-6CQSTxdNl0pf7ovUQUt4M54kvXRxjKZBOrrQQWnQBx1kc1+hnw2TtGPkj2qb22qlv0SHSFU7eh/xRDy!nP4RGjEzEPnrXj+1P4IJmJoV+hGOzhK6HRRc7UzgA0YNsH/Za2AOEp/znZU11EY/tMoGe0s= 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: 3018 Xref: csiph.com comp.lang.forth:17176 On 2012-11-08 18:04:30 +0000, Josh Grams said: > Chris Hinsley wrote: <201211081406178276-chrishinsley@gmailcom> >> On 2012-11-08 13:54:42 +0000, Josh Grams said: >>> Chris Hinsley wrote: <2012110713421835115-chrishinsley@gmailcom> >>>> Folks I have implamented an Amiga style double linked list words set a >>>> few days back and I have an emueration word as follows: >>>> >>>> \ ( u xt lh -- ln | 0) >>>> \ xt api is ( u ln lh -- ln | 0 ) >>>> : LISTHEAD-ENUMERATE-FORWARDS >>>> 0 >R >>>> DUP LISTHEAD-GET-HEAD DUP >>>> BEGIN >>>> NIP DUP LISTNODE-GET-SUCC >>>> DUP >>>> WHILE >>>> 4 PICK 2 PICK 4 PICK >>>> 6 PICK EXECUTE DUP R! >>>> UNTIL THEN >>>> 2DROP 2DROP DROP >>>> R> >>>> ; >>> >>> And just out of curiosity, why are you calling GET-HEAD and then >>> GET-SUCC before you do anything? Doesn't that skip the first list node? >> >> I'm keeping a 'look ahead' pointer to the next node in the list, as the >> callback is allowed to trash the current node ! For instance it could >> remove the node and then your left dangling ! > > Ah, I see. I thought you were keeping the previous one and getting the > successor of that after the XT returned. Guess I didn't untangle the > PICKs carefully enough. > > Hrm...I still think it's wrong...unless LISTNODE-GET-SUCC does something > really strange like ( node node -- node.next node ), then your WHILE is > checking the successor to see if it's null, so you won't process the > final element in the list...? Or am I missing something again? > > --Josh An Amiga style list header has 3 fields the middle one allways 0. It represents the SUCC of the final node and the PRED of the first node. Imagine it to be list two partial overlapping list nodes, the PRED of the SUCC overlap and are 0. Chris