Crisp is an experimental language written in Ruby, using treetop.
Crisp has a Lisp syntax and immutable data structures.
The main purpose of the language is to deal with the issues and problems when creating your own programming language.
- binding values to a symbol with def
- calculations with +, -, * and /
- comparisons with >, < and =
- conditional statements with if
- loop statements with loop/recur
- lazy sequences with lazyseq and next/take/nth
- console output with println
- function creation with fn
- switch/case conditions with cond
- local binding with let
- dynamic loading of crisp source files with load
- head and tail functions for array with head and tail
- calling native ruby with .
# crisp >> (println "Hello World") Hello World => >> (def fib ( ?> fn [n] ?> (if (< n 2) ?> n ?> (+ (fib (- n 1)) (fib (- n i)))))) => #<Crisp::Function:0x1005c2500> >> (fib 10) => 55 >> (def factorial ?> (fn [n] ?> (loop [cnt n acc 1] ?> (if (= 0 cnt) ?> acc ?> (recur (- cnt 1) (* acc cnt)))))) => #<Crisp::Function:0x1001ad9d8> >> (factorial 12) => 479001600
For more examples see the examples directory in the repository.
gem install crisp
To start an interactive shell: crisp
To run a crisp programm crisp /path/to/file