Languages#
Nock is Turing-complete, but as you’ve probably come to realize, it’s not exactly a “programming” language: it’s too abstruse and economical to be used directly for most programming tasks. Instead, Nock is best thought of as a compilation target for higher-level languages.
At the current time, the high-level languages under most active development that target Nock are Hoon and Jock. There is also an Urwasm Nock compatibility layer for executing WebAssembly code on a Nock runtime.
Hoon is a mature systems programming language with much syntax and flexibility.
Jock is a scripting language designed as a more developer-friendly alternative to Hoon.
There have also been a few experimental compilers built to play with language concepts:
Hick by ~tacryt-socryp, a Lisp-like Hoon.
(seq (put x 5) (put y (ffi add (get x) 1)) (ffi mul (get x) (get y)))
Hick is a proof of concept for what S-expression syntax might look like in Hoon.
Loon by ~fodwyt-ragful, a Lisp.
Discussion of Loon: Loon is an experimental Lisp dialect that compiles to Nock, with a unique split between two forms of abstraction:
fnfor ordinary closures anddfnfor bare Nock formulas.
North by ~lagrev-nocfep, a Forth interpreter running as a Gall agent.
Discussion of North: North is an ANSI-compatible Forth interpreter that runs on a Nock host, demonstrating how different computation models can be implemented on top of Nock.
Trinitite by ~lagrev-nocfep, not a language, a Raspberry Pi Forth-based Nock OS.