185 lines
5.3 KiB
Markdown
185 lines
5.3 KiB
Markdown
# Tampio Cheatsheet
|
|
|
|
Tampio uses Finnish grammatical cases instead of syntax tokens like `(`, `)`, `,`, `.`.
|
|
The case of a word tells the compiler its role — parameter, argument, target, etc.
|
|
|
|
## Finnish Cases in Tampio
|
|
|
|
| Case (Finnish) | Suffix | Role in Tampio | Example |
|
|
|---|---|---|---|
|
|
| Nominatiivi | — | Function name; return value; variable base form | `kertoma`, `pieni luku` |
|
|
| Genetiivi | `-n` | Function parameter (in definitions and calls); field access | `pienen luvun kertoma` |
|
|
| Illatiivi | `-in/-iin/-aan/-ään` | Addend (`lisättynä`); remainder arg (`rajattuna`); assignment target (`luetaan luku`) | `lisättynä kaniin` |
|
|
| Adessiivi | `-lla/-llä` | Multiplicand (`kerrottuna`); subtrahend (`vähennettynä`); divisor (`jaettuna`); increment amount | `kerrottuna kertomalla` |
|
|
| Translatiivi | `-ksi` | Assignment lvalue (`asetetaan`) | `kuvaukseksi asetetaan` |
|
|
| Partitiivi | `-a/-ä/-ta/-tä` | Increment lvalue (`kasvatetaan`); some quantifiers | `laskuria kasvatetaan` |
|
|
| Essiivi | `-na/-nä` | Two-parameter function name; type conversion | `merkkijonona`, `kerrottuna` |
|
|
|
|
## Arithmetic Operators
|
|
|
|
These are essive functions — the first operand is the subject, the second follows the operator in the case shown.
|
|
|
|
| Operator | Second arg case | JavaScript | Example |
|
|
|---|---|---|---|
|
|
| `lisättynä` | illative | `+` | `x lisättynä y:hin` |
|
|
| `ynnättynä` | illative | `+` | `x ynnättynä y:hin` |
|
|
| `kasvatettuna` | adessive | `+` | `x kasvatettuna y:llä` |
|
|
| `vähennettynä` | adessive | `-` | `x vähennettynä y:llä` |
|
|
| `kerrottuna` | adessive | `*` | `x kerrottuna y:llä` |
|
|
| `jaettuna` | adessive | `/` | `x jaettuna y:llä` |
|
|
| `rajattuna` | illative | `%` | `x rajattuna y:hin` |
|
|
| `yhdistettynä` | illative | `.concat` | `x yhdistettynä y:hin` |
|
|
|
|
Operator chaining is controlled by list separators (see Lists below):
|
|
|
|
```tampio
|
|
x jaettuna y:llä vähennettynä z:lla lisättynä w:hen # x/(y-(z+w))
|
|
x jaettuna y:llä, vähennettynä z:lla ja lisättynä w:hen # ((x/y)-z)+w
|
|
```
|
|
|
|
## Function Definition
|
|
|
|
```tampio
|
|
[parameter/genitive] [function name] on [expression].
|
|
```
|
|
|
|
The parameter must be two words: an adjective + class name. Use `se` to refer to it in the body.
|
|
|
|
```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.
|
|
```
|
|
|
|
Or with unnamed parameter (`se` = `this`):
|
|
|
|
```tampio
|
|
Luvun edeltäjä on se vähennettynä yhdellä.
|
|
```
|
|
|
|
## Function Call
|
|
|
|
```tampio
|
|
[argument/genitive] [function name]
|
|
```
|
|
|
|
```tampio
|
|
viiden kertoma # factorial(5)
|
|
neljän neliöjuuri # sqrt(4)
|
|
```
|
|
|
|
## Ternary Expression
|
|
|
|
```tampio
|
|
riippuen siitä, [onko/eikö] [expr] [operator] [expr], joko [a] tai [b]
|
|
```
|
|
|
|
```tampio
|
|
riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi, joko yksi tai ...
|
|
```
|
|
|
|
## Comparison Operators
|
|
|
|
Used in ternaries and `jos` conditions.
|
|
|
|
| Tampio | JavaScript |
|
|
|---|---|
|
|
| `on` (empty) | `==` |
|
|
| `on yhtä suuri kuin` | `==` |
|
|
| `on sama kuin` | `===` |
|
|
| `on erisuuri kuin` | `!=` |
|
|
| `on pienempi kuin` | `<` |
|
|
| `on suurempi kuin` | `>` |
|
|
| `on pienempi tai yhtä suuri kuin` | `<=` |
|
|
| `on enintään` | `<=` |
|
|
| `on suurempi tai yhtä suuri kuin` | `>=` |
|
|
| `on vähintään` | `>=` |
|
|
|
|
Negate with `ei ole`: `se ei ole nolla` = `this !== 0`.
|
|
|
|
## Variable Declaration
|
|
|
|
```tampio
|
|
Olkoon [name] uusi [type], jonka [field] on [value].
|
|
Olkoon [name] [value].
|
|
```
|
|
|
|
```tampio
|
|
Olkoon pieni muuttuja uusi muuttuja, jonka arvo on nolla.
|
|
```
|
|
|
|
## Method Definition (Procedures)
|
|
|
|
```tampio
|
|
Kun [self] [verb] [parameters],
|
|
[statement],
|
|
[statement]
|
|
ja [last statement].
|
|
```
|
|
|
|
```tampio
|
|
Kun nykyinen sivu avautuu,
|
|
pieneen muuttujaan luetaan luku
|
|
ja nykyinen sivu näyttää pienen muuttujan arvon kertoman.
|
|
```
|
|
|
|
## If Statement
|
|
|
|
```tampio
|
|
, jos [condition], niin [statement list]
|
|
, jos taas [condition], niin ... # else if
|
|
```
|
|
|
|
```tampio
|
|
jos listan koko ei ole nolla, niin
|
|
listan ensimmäinen alkio käsitellään
|
|
ja listan häntää iteroidaan.
|
|
```
|
|
|
|
## Lists (Blocks)
|
|
|
|
Commas and `ja` replace `{` / `}`:
|
|
|
|
| Syntax | Meaning |
|
|
|---|---|
|
|
| `[a], [b], [c] ja [d]` | List of four items |
|
|
| `[a] eikä muuta` | List of one item |
|
|
| `[a].` | List of one item (at end of definition) |
|
|
|
|
## Class Definition
|
|
|
|
```tampio
|
|
[class name/adessive] on [field list].
|
|
```
|
|
|
|
```tampio
|
|
Vektorilla on komponentit. # class vektori { komponentit = [] }
|
|
Työntekijä on henkilö, jolla on työnantaja. # class Tyontekija extends Henkilö
|
|
```
|
|
|
|
## Assignment
|
|
|
|
```tampio
|
|
[lvalue/translative] asetetaan [expression] # lvalue = expression
|
|
[lvalue/partitive] kasvatetaan [expression/adessive] # lvalue += expression
|
|
```
|
|
|
|
```tampio
|
|
kivan kaverin kuvaukseksi asetetaan teksti "Hän on kiva"
|
|
loistavaa laskuria kasvatetaan yhdellä
|
|
```
|
|
|
|
## Common Built-ins
|
|
|
|
| Tampio | JavaScript | Notes |
|
|
|---|---|---|
|
|
| `nykyinen sivu` | `document` | HTMLDocument |
|
|
| `nykyinen sivu näyttää X` | `document.write(X)` | |
|
|
| `teksti "..."` | `"..."` | String literal |
|
|
| `lause "..."` | `"..."` | String literal (alternative) |
|
|
| `muuttujaan luetaan luku` | `muuttuja.arvo = parseInt(prompt(...))` | Read number |
|
|
| `X näytetään käyttäjälle` | `alert(X)` | Browser alert |
|
|
| `se` | `this` | Self / first parameter |
|
|
| `nolla`…`kymmenen` | `0`…`10` | Number literals |
|