Juoni is an interpreter for a Scheme/LISP-like language written in Rust. It was originally conceived as an assignment for the Compiler Technology course in University of Jyväskylä, but turned out so well that I decided to publish it on my homepage as a project in its own right.

It uses for lexing and parsing, and Clap for parameter processing.


Principal features include following:

  • Thoroughly commented and documented
  • Single-linked lists, integer arithmetic, comment syntax
  • First-class functions, support for variadic functions
  • Limited non-stack-growing tail recursion
  • String (row) input and output, simple string interpolation
  • REPL, ability to pass arguments on startup to programs

You may be interested in viewing the language specification, which details the characteristics of the language more precisely.

Live terminal

The terminal below interacts with a WebAssembly adaptation of Juoni. It supports essentially everything that the native Rust version does, with some relatively minor limitations (#readln uses prompts) and exceptions (scope identifiers are constant, as RNG is not properly supported).

The terminal is dynamically loaded in a frame. Please wait for a few moments for it to appear.


Visit the GitLab repository for the current version

© Arttu Ylä-Sahra 2016-2022
Page rendered on 2022-03-25T15:05:50.568+00:00
Privacy statement