diff --git a/examples/data-structures/lista.itp b/examples/data-structures/lista.itp new file mode 100644 index 0000000..5ac4e77 --- /dev/null +++ b/examples/data-structures/lista.itp @@ -0,0 +1,37 @@ +# Lista — List Operations in Tampio +# +# "lista" is Tampio's built-in ordered collection type. +# Its internal field "alkio" holds the elements as an array. +# +# Key methods: +# koko = size of the list +# ensimmäinen alkio = first element (ordinal subscript) +# jokainen alkio = iterate all elements (like forEach) +# järjestetään = sort ascending in place +# järjestetään laskevaan suuruusjärjestykseen = sort descending + +# Initialize with the first five digits of pi: 3, 1, 4, 1, 5 +# "jonka alkioita ovat" = "whose elements are" (partitive plural) +# "eikä muuta" closes a single-item or final-item list + +Olkoon kiva lista uusi lista, jonka alkioita ovat kolme, yksi, neljä, yksi ja viisi eikä muuta. + +# "jokainen alkio" in array subscript position = forEach +# "koko" = length, "ensimmäinen alkio" = first element + +Kun nykyinen sivu avautuu, + nykyinen sivu näyttää tekstin "

Lista: ", + nykyinen sivu näyttää kivan listan jokaisen alkion, + nykyinen sivu näyttää tekstin "

Koko: ", + nykyinen sivu näyttää kivan listan koon, + nykyinen sivu näyttää tekstin "

Ensimmäinen alkio: ", + nykyinen sivu näyttää kivan listan ensimmäisen alkion, + nykyinen sivu näyttää tekstin "

", + kiva lista järjestetään, + nykyinen sivu näyttää tekstin "

Nousevassa järjestyksessä: ", + nykyinen sivu näyttää kivan listan jokaisen alkion, + nykyinen sivu näyttää tekstin "

", + kiva lista järjestetään laskevaan suuruusjärjestykseen, + nykyinen sivu näyttää tekstin "

Laskevassa järjestyksessä: ", + nykyinen sivu näyttää kivan listan jokaisen alkion +ja nykyinen sivu näyttää tekstin "

". diff --git a/examples/data-structures/vektori.itp b/examples/data-structures/vektori.itp new file mode 100644 index 0000000..24f82c5 --- /dev/null +++ b/examples/data-structures/vektori.itp @@ -0,0 +1,60 @@ +# Vektori — Custom Data Structure in Tampio +# +# Defines a "vektori" (vector) class with fields and computed methods. +# This example shows Tampio's OOP model: +# class declaration → "[name/adessive] on [fields]" +# field access → "[object/genitive] [field]" (same syntax as function call) +# recursive methods → ternary base case + recursive step +# +# Using vector [3, 4] — its Euclidean length is exactly 5 (3-4-5 right triangle). + +# Class declaration: adessive case marks the class name +# "komponentit" is plural → stored as an array + +Vektorilla on komponentit. + +# "dimensio" = number of components +# "sen" = genitive of "se" (the unnamed parameter = self) +# "komponenttien määrä" = count of the elements array + +Vektorin dimensio on sen komponenttien määrä. + +# "pää" = head (first element) +# "häntä" = tail (new vektori from index 2 onward) +# "toisesta alkaen" = slice starting from the second element + +Vektorin pää on sen ensimmäinen komponentti. +Vektorin häntä on uusi vektori, jonka komponentit ovat sen komponentit toisesta alkaen. + +# Recursive sum: base case 0 when empty, otherwise head + tail's sum +# "lisättynä ... summaan" = added to ... sum (illative case) + +Vektorin summa on + riippuen siitä, onko sen dimensio nolla, + joko nolla + tai sen pää lisättynä sen hännän summaan. + +# Euclidean length: sqrt(x1^2 + x2^2 + ...) +# "toinen potenssi" = squared (array subscript syntax: potenssi[2]) +# Operator chain without separator = innermost grouping: +# (head^2 + tail.length^2).sqrt() + +Vektorin pituus on + riippuen siitä, onko sen dimensio nolla, + joko nolla + tai sen pään toisen potenssin + lisättynä sen hännän pituuden toiseen potenssiin + neliöjuuri. + +# Vector [3, 4]: sum = 7, length = sqrt(9+16) = 5 + +Olkoon kiva vektori uusi vektori, jonka komponentteja ovat kolme ja neljä eikä muuta. + +Kun nykyinen sivu avautuu, + nykyinen sivu näyttää tekstin "

Dimensio: ", + nykyinen sivu näyttää kivan vektorin dimension, + nykyinen sivu näyttää tekstin "

Summa: ", + nykyinen sivu näyttää kivan vektorin summan, + nykyinen sivu näyttää tekstin "

Pituus (3-4-5 kolmio → 5): ", + nykyinen sivu näyttää kivan vektorin pituuden +ja nykyinen sivu näyttää tekstin "

".