Nezufun
Nezufun is a statically scoped, dynamically typed, functional language with a
uniform syntax that runs in a bytecode VM. It’s intended to be a scripting
language that I can drop into C programs (or programs that can call C
functions). It’s still a work in progress but I’ve recently finished a working
compiler and VM, so it’s at the point where it can actually run programs.
Nezufun is very similar to Lisp, but I don’t think it can be properly called
a Lisp.
Features
- Functions are defined with explicit currying, and function application is
implicitly sequential, rather than all-at-once. Partially applied functions
and functions of a variable number of arguments can be constructed with no
special extra syntax.
- Some useful built in data structures:
- Immutable cons cell (ish) lists.
- Contiguous arrays, optionally growable or immutable.
- Maps and tables for looking up values by keys.
- 8 bit character strings.
- Compiled to bytecode for better performance than a tree-walking interpreter.
- Programs can be compiled and saved to disk, and multiple images can be
combined into one.
- Exclusively uses prefix notation, but without the need for parenthesis around
every sub expression or special indentation rules.
- The Nezufun runtime (data structures, allocator, and garbage collector) can
be used by themselves in C without the rest of the language.
- Though Nezufun can be embedded into anything, I am working on a REPL with an
integrated 3D renderer for interactive graphics programming.
WIP Specification Document