Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 38 additions & 17 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,61 @@
# Stroll
***"A Lisp dialect in Python."***
***"A lightweight Lisp dialect implemented in Python."***

---

## ⚙️ Introduction
Stroll in short is a small Lisp dialect written in python!
Like a leisurely walk along the river we hope you enjoy your use and potential contribution to such project!
Stroll is a small, extensible Lisp dialect written in Python.
It’s designed to be simple, approachable, and ideal for learning, experimenting, and contributing.
Whether you’re new to Lisp or exploring interpreter design, Stroll provides a friendly environment to build and grow with the language.

If you’re new to Lisp, check out this [quick intro](https://en.wikipedia.org/wiki/Lisp_(programming_language)).


If you’re new to Lisp, check out our [introductory guide](https://en.wikipedia.org/wiki/Lisp_(programming_language)).

---

## 🧩 Features
Here are some of the things **Stroll** currently has to offer!:

### 🧮 Math Operations:
### 🧮 Math & Comparisons:
- Basic arithmetic: `+`, `-`, `*`, `/`
- Comparisons: `>`, `<`, `>=`, `<=`, `==`, `!=`
- Advanced math: `mod`, `pow`, `sqrt`, `abs` *(untested)*
- Comparison operators: `>`, `<`, `>=`, `<=`, `==`, `!=`
- Additional math functions: `mod`, `pow`, `sqrt`, `abs` *(some untested)*

### 📦 Working with Data:
### 📦 Data & Collections:
- Variables: `let` to store values
- Lists: `list` to make lists, `append` to add elements
- List operations: `len`, `reverse`, `index` to manage elements
- List utilities: `len`, `reverse`, `index` to manage elements

### 🔤 Strings & Text:
- String creation with quotes
- String operations: `concat`, `strlen`, `substr` *(Also untested)*
- Create strings using quotes
- String functions: `concat`, `strlen`, `substr` *(some untested)*

### 🔁 Control Flow:
- Conditionals: `if`, `elif`, `else` (Please look in the docs for it is quite different here...)
- Conditionals: `if`, `elif`, `else` (syntax differs from traditional Lisp — see docs)
- Loops: `while` loops
- Logic: `&` (and), `|` (or), `true`, `false`
- Logic values & operators: `&` (and), `|` (or), `true`, `false`

### 🖨️ Input/Output:
- Print to console: `print`
- Read input: `scan`

### 👨‍💻 User defined functions:
- Define function: `fn`
- Define function with `fn`
- Set passed in arguments: `argone|argtwo|argthree`
- Call functions: `call`: call a user defined function
- Call functions using `call`: call a user defined function

### Quick Example:

```
(+ 1 2)

(let x 10)
(print x)

(fn square |argone| (* argone argone))
(call square 6)
```

---

Expand All @@ -54,7 +69,13 @@ We’re aiming for:
---

## 🤝 Contributing
Interested in **Stroll** and want to help it grow?
Check out our [contributing guide](docs/contributing.md) to get started!
Interested in **Stroll** and want to help it grow?

We welcome contributions of all kinds!
To get started, please review the contributing guide and explore open issues [contributing guide](docs/contributing.md) to get started!

If you’d like to add features, improve documentation, or help refine the interpreter, your contributions are appreciated.



---