The following is from the readme on github:
jedi is a small, experimental language focused on two fundamental concepts: immutable state and dataflow. jedi is not a dataflow language (such as Mana), nor is it a functional language (such as Haskell).
Rather, jedi is a representational language founded upon a few featured data types: disturbances and contemplations, which map directly to edges and states of a finite state machine model of computation, here modeled as a meditation.
The syntax might look a little like this:
// this is a comment fib_machine [ // this is a meditation (a FSM) start -> // this is a contemplation (a state) without output (Mealy style) | (_,y,0) :: fn((_,y,0)) = y -> end // this is a disturbance // (edge) with output (Mealy) | (x,y,z) :: fn((x,y,z)) = (y, x+y, z-1) -> start // Mealy disturbance end :: fn(x) = die(echo(x)) -> . // this is a contemplation with output // (Moore style). The . denotes an end state. ] // end fib_machine reflect -- (1,1,5) :> fib_machine // this attaches the tuple (1,1,5) to fib_machine's input -- meditate // this starts the clock
The above would calculate the 5th number in the Fibonacci sequence.
Using the example above as a guide, a hello world example could be built as follows:
echo_machine [ start :: fn(x) = echo(x) -> . ] reflect -- "hello, world!" :> echo_machine -- meditate
Simple enough, right?
You can get jedi at its official github repo: gatesphere/jedi