add a readme
This commit is contained in:
parent
0676cad34d
commit
6c5df444da
59
README.md
Normal file
59
README.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Prosper
|
||||
|
||||
Prosper is a Forth-like stack-based language. While taking specific influence from Forth, it does not attempt to emulate or implement the ANS Forth standards.
|
||||
|
||||
Currently, the language is entirely interactive -- to explore, simply run `go run .` in the root of this project and an interactive session will begin.
|
||||
|
||||
## Syntax
|
||||
|
||||
Prosper is stack-based, as mentioned, so all the standard stack semantics are present:
|
||||
|
||||
```
|
||||
> 1 2 3 4 + * -
|
||||
ok
|
||||
> .
|
||||
-13 ok
|
||||
```
|
||||
|
||||
New words can be defined using `: ;`:
|
||||
|
||||
```
|
||||
> : SQUARE DUP * ;
|
||||
ok
|
||||
> 10 SQUARE .
|
||||
100 ok
|
||||
```
|
||||
|
||||
It has a single loop construct, `DO LOOP`:
|
||||
|
||||
```
|
||||
> : TOFIVE 5 0 DO I . LOOP ;
|
||||
ok
|
||||
> TOFIVE
|
||||
0 1 2 3 4 ok
|
||||
```
|
||||
|
||||
Branches using `IF ELSE THEN` work:
|
||||
|
||||
```
|
||||
> : EMOJI 0 < IF 128201 EMIT ELSE 128200 EMIT THEN ;
|
||||
ok
|
||||
> 100 EMOJI
|
||||
📈 ok
|
||||
> -100 EMOJI
|
||||
📉 ok
|
||||
```
|
||||
|
||||
And, of course, it knows how to quit:
|
||||
|
||||
```
|
||||
> BYE
|
||||
bye
|
||||
```
|
||||
|
||||
## Future Plans
|
||||
|
||||
* Implement `VARIABLE` and `CONSTANT` and the various `? ! @` related words
|
||||
* Implement `SEE`
|
||||
* Implement loading libraries of pre-written functions both from the command-line and at run-time
|
||||
* Add much better readline behaviors in the interactive console (up-arrow for history, cursor movement...)
|
Loading…
Reference in New Issue
Block a user