72 lines
3.0 KiB
Markdown
72 lines
3.0 KiB
Markdown
# Tampiorama
|
|
|
|
A showcase for [Tampio](https://github.com/fergusq/tampio), a natural-language object-oriented programming language that uses Finnish grammar and compiles to JavaScript.
|
|
|
|
Tampiorama provides working, annotated examples and documentation to help you explore Tampio without wrestling with its native dependencies.
|
|
|
|
## Quickstart (Docker)
|
|
|
|
The easiest way to try Tampio, no manual `libvoikko` setup required.
|
|
|
|
Compile all examples to HTML (the `.html` files are not committed — they're generated from the `.itp` sources):
|
|
|
|
```sh
|
|
make
|
|
```
|
|
|
|
Then serve locally and open in your browser:
|
|
|
|
```sh
|
|
python3 -m http.server 9994 --directory examples
|
|
```
|
|
|
|
Open `http://localhost:9994/basics/index.html` for the full example index, or go directly:
|
|
|
|
| URL | What it does |
|
|
|-----|-------------|
|
|
| `http://localhost:9994/basics/hello.html` | Alerts "Hei maailma!" on load |
|
|
| `http://localhost:9994/basics/factorial.html` | Prompts for n, displays n! |
|
|
| `http://localhost:9994/basics/fibonacci.html` | Prompts for n, displays fib(n) |
|
|
| `http://localhost:9994/data-structures/lista.html` | List sorted ascending and descending |
|
|
| `http://localhost:9994/data-structures/vektori.html` | Custom class, Euclidean length of [3,4] = 5 |
|
|
| `http://localhost:9994/strings/merkkijono.html` | String length, concat, trim, split |
|
|
| `http://localhost:9994/async/nappi.html` | Click handlers, mutable counter (visual tally) |
|
|
| `http://localhost:9994/program/kasvutaulukko.html` | Factorial and Fibonacci sequences for n=1..7 |
|
|
|
|
## What is Tampio?
|
|
|
|
Tampio programs read like Finnish sentences. Methods are defined using grammatical cases, so the language's syntax is shaped by natural-language morphology rather than punctuation.
|
|
|
|
```tampio
|
|
Pienen luvun kertoma on
|
|
riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
|
|
joko yksi
|
|
tai pieni luku kerrottuna pienen luvun edeltäjän kertomalla.
|
|
```
|
|
|
|
`pienen luvun kertoma` — "the factorial of a small number". The parameter `pieni luku` (small number) appears in genitive case before the method name, and the recursive call `pienen luvun edeltäjän kertomalla` reads as "by the factorial of the predecessor of the small number".
|
|
|
|
See [`docs/cheatsheet.md`](docs/cheatsheet.md) for a map of Finnish grammatical cases to their roles in Tampio code, and [`docs/vs-javascript.md`](docs/vs-javascript.md) for side-by-side comparisons with JavaScript.
|
|
|
|
## Examples
|
|
|
|
| Directory | Contents |
|
|
|-----------|----------|
|
|
| `examples/basics/` | Hello world, factorial, Fibonacci |
|
|
| `examples/data-structures/` | Built-in list operations, custom class |
|
|
| `examples/strings/` | String length, concat, trim, split |
|
|
| `examples/async/` | DOM click handlers, mutable state |
|
|
| `examples/program/` | Capstone combining recursion and list iteration |
|
|
|
|
## Testing
|
|
|
|
See [`docs/testing.md`](docs/testing.md) for a step-by-step guide to verifying each example.
|
|
|
|
## Local Setup (without Docker)
|
|
|
|
See [`docs/install.md`](docs/install.md) for instructions on installing `libvoikko` and `tampio` natively.
|
|
|
|
## License
|
|
|
|
MIT
|