"lib/merge-sort.4th" INCLUDED ALSO MERGE-SORT STRUCT CELL% FIELD NODE>LINK CELL% FIELD NODE>DATA ENDSTRUCT NODE% : COMPARE-NODES ( node1 node2 -- -1 | 0 | 1 ) >R NODE>DATA @ R> NODE>DATA @ - SIGNUM ; : MAKE-LIST ( xu ... x1 u -- head ) 0 >R RSP@ SWAP BEGIN ?DUP WHILE 1- -ROT NODE% %ALLOCATE DUP ROT ! DUP NODE>LINK -ROT NODE>DATA ! SWAP REPEAT DROP R> ; : SHOW-LIST ( head -- ) BEGIN ?DUP WHILE DUP NODE>LINK @ SWAP NODE>DATA @ . SPACE REPEAT EOL ; 7 5 3 6 8 9 4 2 4 9 MAKE-LIST "Before: " TYPE DUP SHOW-LIST ' NODE>LINK ' COMPARE-NODES MERGE-SORT> "After: " TYPE SHOW-LIST