# 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 |