CONTRIB.9FRONT.ORG NO REFUNDS

Advanced Namespace Tools blog

17 August 2019

Digging to the Roots of data and algorithms

I decided I really needed to put some blog posts up again so I opened the blog folder in the ANTS repo and found I had gotten as far as creating the data and title of this post, so I’m just going to roll with it. Let’s start with a fragment of Weird Code:

   txtcmdone = dicref(pushItem((Inputtoken 30), (pushInputItem ((Inputtoken 31), (makedic (Just [Inputtoken 31], ""))))))
   txtcmdtwo = stk2d(pushInputBind(Inputtoken 17, (oneplus(tostack(pushInputBind(Inputtoken 16, setfiletarg(dup(s2da(pushInputBind(Inputtoken 20, quote(Just [Inputtoken 30], "")))))))))))
   txtcmdthree = stk2d(pushInputBind(Inputtoken 31, pushCounter(Counter 1, s2da(pushInputBind(Inputtoken 20, quote(Just [Inputtoken 39], ""))))))
   txtcmdfour = stk2d(pushInputBind(Inputtoken 13, (oneplus(tostack(pushInputBind (Inputtoken 12, ((tick(Just [Inputtoken 30], "")))))))))

Give your eyes a moment to stop bleeding. And now for something completely different:

   : DICREF ( <"name"> dicaddr -- ) \ create dicref jump word
    CREATE ,
     DOES> @ STARTDIC CURLIDIC ;
   : INCSTREND ( dicaddr -- openaddr ) \ prep for storage of new word
     INCDIC INCSTARTDIC ENDSTRDIC ;
   : INCLIEND ( dicaddr n -- openaddr )
     INCDIC INCSTARTDIC ENDLIDIC ;
   : S2DA ( straddr dicaddr -- newaddr ) \ store string in dic leave new addr
    INCSTREND dup -rot swap dup C@ 1+ rot swap move ;
   : STK2D ( ...items n dicaddr -- ) \ append stack to dic
     INCLIEND LISTO ;

Let’s change it up a little bit. How about a bit of shell?

   hub -b $s.ctl
   mount -c /srv/$s.ctl /n/$s.ctl
   echo cd /n/$s.ram >>/n/$s/io0
   echo pforth >> /n/$s/io0
   echo include $thisdir/map9p.fth >> /n/$s/io0
   echo include $thisdir/root.fth >> /n/$s/io0
   echo dispatch.rc -t /n/$s/io0 >> $xx
   echo mkdir dir1 >> $xx

And maybe a slightly different view of a layer to conclude this introduction:

   makedic droot droot dicref root    \ list dic of pointers to files - the directory object itself
   " root_" drootstrs s2da dup 1 drootn stk2d       \ create dirname str saving ptr in both rootn
   1 drootfiles stk2d   \ and in drootfiles
   ' rootn ' rootfiles 2 droot stk2d         \ make dir object with no files, name + filenames ptrs
   ' root 1 ddirtypes stk2d    \ add new dir to list of dirtypes

So, these are a few fragments of code from a toy database/fs system for Plan 9 built from pforth forth, hugs haskell, rc shell, and the hubfs 9p fs. It was created to investigate the ways in which a single core datastructure - a filesystem-like data tree - could be created as a single unified abstraction from the composition of several different language environments.