2019-04-09 20:50:39 +02:00
|
|
|
# fe
|
|
|
|
A *tiny*, embeddable language implemented in ANSI C
|
|
|
|
|
|
|
|
```clojure
|
|
|
|
(= reverse (fn (lst)
|
|
|
|
(let res nil)
|
|
|
|
(while lst
|
|
|
|
(= res (cons (car lst) res))
|
|
|
|
(= lst (cdr lst))
|
|
|
|
)
|
|
|
|
res
|
|
|
|
))
|
|
|
|
|
|
|
|
(= animals '("cat" "dog" "fox"))
|
|
|
|
|
|
|
|
(print (reverse animals)) ; => ("fox" "dog" "cat")
|
|
|
|
```
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
* Supports numbers, symbols, strings, pairs, lambdas, macros
|
|
|
|
* Lexically scoped variables, closures
|
|
|
|
* Small memory usage within a fixed-sized memory region — no mallocs
|
|
|
|
* Simple mark and sweep garbage collector
|
|
|
|
* Easy to use C API
|
|
|
|
* Portable ANSI C — works on 32 and 64bit
|
|
|
|
* Concise — less than 800 sloc
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
* **[Demo Scripts](scripts)**
|
2019-04-11 20:10:36 +02:00
|
|
|
* **[C API Overview](doc/capi.md)**
|
2019-04-09 20:50:39 +02:00
|
|
|
* **[Language Overview](doc/lang.md)**
|
|
|
|
* **[Implementation Overview](doc/impl.md)**
|
|
|
|
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
The library focuses on being lightweight and minimal; pull requests will
|
|
|
|
likely not be merged. Bug reports and questions are welcome.
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
This library is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the MIT license. See [LICENSE](LICENSE) for details.
|