prosper/README.md

60 lines
1.2 KiB
Markdown
Raw Normal View History

2021-02-21 17:22:08 +00:00
# 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...)