Debug, tracing, live reloading, etc. --- such a great experience

I just wanted to say how great the experience is using Dialog; its radical simplicity, combined with a debugger (aka REPL) that allows you to directly manipulate the environment along with live reloading of code so simplifies the experience.

I’ve found that using (trace on) and entering a command is usually too dense to understand BUT bypassing the parser (e.g. (instead of [switch on #flashlight]) ) can be incredibly illuminating.

Likewise, being able to directly enter (now) (#headlights is off) rather than having to run around and actually do it, keeps the iteration cycle very short.

Also, changing my prose or logic, then @g to see the results, saves me so much effort.

I mean, I’d like some of the features of Inform, like the skein for testing, and the automatic map … but I feel more effective in Dialog already, even though I’ve played around with Inform (a couple of hours per year) for a decade.


Oh you.


That was unintentional. I wish it was intentional.


Increasingly, I think getting effective w/ Dialog is getting effective with the debugger, and the ability to trigger queries and (now) directly.

I’ve also been adding some debug-only predicates to help out:

(trace $Action)
    (trace on)
    (stoppable) { (try $Action ) }
    (trace off)

(trace instead $Action)
    (trace on)
    (stoppable) { (instead of $Action) }
    (trace off)

Further praise:

My current project is at 1280 lines of code, compiles to .z8 in 0.18 seconds, and my first test starts the debugger and executes 39 in-game commands in 61ms. On my 2015 MacBook Pro, not an over-powered machine.