As of this week, Oak is at a stage where what I consider "basic" features of the language and surrounding tools are done. These include
- The
oak
interpreter (obviously) - Syntax highlighting in my editor of choice (Vim)
- Automatic code formatting (
oak fmt
) - Compilation and bundling to single-file programs, especially to JavaScript/the web platform
- Basic standard libraries, including a Markdown renderer and date/time utilities
It puts Oak at toolchain feature parity with Ink where I left off with it, and makes me very comfortable to finally build on Oak, rather than simply work on Oak the language and toolchain.
Since I've gotten to this point, I've found myself keeping a terminal tab with an Oak program and a repl open, and tinkering and playing with it from time to time. Mostly writing programs that don't do anything special, like:
std := import('std')
Message := 'Hello, Mac!'
len(Message) |> std.range() |> with std.each() fn(n) {
std.println(Message |> std.slice(0, n + 1))
}
Nonetheless, I enjoy it and it occasionally leads to interesting hacks. It's making me think about whether being able to play with a tool is a vital aspect of a good tool. Play is where a lot of discovery and divergent thinking happens, and where a tool can really come to feel right in your hands.