mirror of
https://github.com/peklaiho/madlisp.git
synced 2024-11-22 21:35:03 +00:00
update readme with goals and non-goals
This commit is contained in:
parent
87cff43e93
commit
c73afe1878
17
README.md
17
README.md
@ -4,7 +4,22 @@ MadLisp is a [Lisp](https://en.wikipedia.org/wiki/Lisp_%28programming_language%2
|
||||
|
||||
## Goals
|
||||
|
||||
The goal of the project was to learn about the internals of programming languages and to build a simple language suitable for scripting and similar use cases.
|
||||
* REPL environment where the user can interactively experiment with the language. Suitable for executing pieces of code one by one and examining the internal state of the system.
|
||||
* Minimal safeguards or restrictions as to what can be done. Breaking things or using the language in unexpected ways should be part of the fun.
|
||||
* Performance does not need to match commercial-grade languages, but needs to be fast enough for real-world programs and uses cases.
|
||||
* Suitable to be used as a scripting language in Linux shell scripts and similar environments.
|
||||
* Suitable to be used as an embedded scripting language inside another PHP application.
|
||||
* Clear and intuitive error messages. This is important for pleasant user experience.
|
||||
* Provide a library with commonly used features such as HTTP requests, JSON processing and SQL database support.
|
||||
* Provide a clean [interface](src/Lib/ILib.php) for extending the language with your own functions defined in PHP.
|
||||
* Provide a safe-mode where access to the file system and other external I/O is restricted.
|
||||
* Provide a debug mode which shows what is happening inside the code evaluation.
|
||||
* Loosely respect the Lisp legacy with things like naming conventions but do not be constrained by it.
|
||||
|
||||
## Non-goals
|
||||
|
||||
* Ability to call arbitrary PHP functions directly. The language should have control over which PHP functions can be called and how.
|
||||
* Namespaces or similar mechanisms. The global namespace is a feature, not a bug! Use a prefix for your function names if this becomes a problem.
|
||||
|
||||
## Features
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user