README.md

# sammal

A toy Lisp interpreter for a compilers class.

## Dependencies

- [Elixir 1.4](http://elixir-lang.org/install.html)

## Build

```bash
mix deps.get
mix escript.build
./sammal [-c "(some command)"] [-i] [./some_source_file.sammal]

# Examples:
./sammal -c "(def multiply (x y) (* x y)) (display (multiply 2 3))"
```

## Test

`mix test` to run tests, or `mix test.watch` to automatically run tests, optional type checks and linter on file changes.


## TODO

- [x] quoting
- [ ] fix tokenizing "\x\"y"
- [ ] file IO
- [ ] REPL
- [ ] handle empty after quote `x'`
- [x] error reporting
- [ ] quasiquote
- [ ] disallow special chars in symbols
- [ ] string interpolation
- [ ] range operations? `0..10`, `0..-1`, ...
- [ ] macros