Introducing the Cult of the Bound Variable to the Cult of Forth

[The twelfth in a series of posts on the evolution of TransForth]   It’s been quite fun playing with this Universal Machine from the Cult of the Bound Variable. In this post we’re going to continue the journey toward building a full Forth for this machine by assembling a Forth inner interpreter; turning this register…

0

Programming a 2000 Year Old Sandstone Computer

[The eleventh in a series of posts on the evolution of TransForth] If you think coding with punch cards is old school, you should try using sandstone tablets! Legend has it that members of the Cult of the Bound Variable designed and may have even constructed a city-sized machine powered by falling sand more than…

0

Meta-Circular Chicken and Egg

[The tenth in a series of posts on the evolution of TransForth]  This post may not quite be deserving of a wizard’s cape and 2001 Space Odyssey background music as when Sussman writes out Lisp in Lisp (at 34:34 – my absolute favorite SICP lecture by the way), but still… we are about to finish…

0

Programming is “Pointless”

Some may call it “pointless”, but I absolutely love the point-free tacit programming style. The level of brevity can be truly astounding! Some of the terseness comes from not having to mention parameter names all over the place and much of it comes from the relentless factoring that this style makes straight forward (the Factor…

7

Spanning Two Worlds

[The ninth in a series of posts on the evolution of TransForth] The dictionary we have at the moment is split across two worlds. The definitions are in Forth-world; packed into plain memory. But we still have the F#-world mapping of WordRecords to those memory locations. let mutable dict = [] type WordRecord = {…

0

Heart Transplant

[The eighth in a series of posts on the evolution of TransForth]   They say that the inner interpreter is the heart of Forth and outer interpreter is the soul. It’s time to give TransForth a heart transplant! To really understand what we’re doing here, I’d suggest watching my video demonstration below (perhaps the first bit…

0

Tearing Away the Scaffolding

[The seventh in a series of posts on the evolution of TransForth] At this point we have a reasonably complete Forth that’s pretty fun to play with. Like I said in the first post though, we don’t just want to build a Forth in F#. Stopping here wouldn’t be in keeping with “Forth Tradition” which…

2

: LOOPTY DO I . LOOP ;

[The sixth in a series of posts on the evolution of TransForth] There’s beginning to be more Forth than F# in these posts! The last major piece we’re missing in the language, aside from some compile-time trickery we’ll get into later, is the standard Forth looping constructs. We’re just about done with the whole core language!…

3

IF … ELSE … THEN

[The fifth in a series of posts on the evolution of TransForth]   Sadly (or happily), we’ve come to a point at which we need to begin thinking like an assembly programmer in order to appreciate the mechanics of Forth’s control flow words. We’ll start by implementing IF … ELSE … THEN in this post…

0

VARIABLE X

[The fourth in a series of posts on the evolution of TransForth] We’re getting very close to the point at which we’ll need to start moving closer to the machine with things like direct memory access. Implementing IF/ELSE/THEN, which we’ll do in the next post, will practically require it.   Let’s see if we can stretch…

0