Precedent is an interpreted language that I made without knowing how interpreters work. As a result, it probably does some really weird and inefficient things! But I wanted to figure it out for myself. The basic recursive structure is an evolution of an old idea I had for a boolean logic simulator I was working on at the time. Essentially, values resolve recursively through functions until hitting literals, which return themselves. Everything in precedent is a symbol. Every symbol is either a literal or a key. A key is either a store()'d symbol, or an internal function. Internal functions have an implementation defined by eval.c, whereas keys are simply pointers to other symbols, as stored in a hashtable. ref() returns a pointer to its argument, eval() evaluates a ref, passing its other arguments to the scope pointed to. Read the files in doc/ for more specific information, or look at examples/ to see what the syntax looks like and what's possible.