megj. a dupla egyenlőség jel nem lesz része a nyelvnek csupán a funkciók működésének szemléltetésére használatos
arithmetic functions:
sum(1 2 3) == 6
sub(5 2 1) == 5-3-1 == 1
div(8 2 2) == 8/2/2 = 2
prod(2 3 4) == 2*3*4 == 24
mod(9 3 2) == 8%5%2 == 1
min(8 3 7 2) == 2
max(8 3 7 2) == 8
comparisons: (ezeknek a nevével még mindig nem vagyok teljesen elégedett, de azért jobb)
equal(2 sum(1 1)) == true
less(2 3) == true
greater(2 3) == false
... további változatok a not függvény segítségével érhetők el. pl: lessorequal == not(grater(2 3))
lists and strings:
range(5) == [0, 1, 2, 3, 4] == x
len(x) == 5
get(x 2) == 2
get(x 2 3) == [2, 3]
rev(x) == [5, 4, 3, 2, 1, 0]
merge(x range(2)) == [0, 1, 2, 3, 4, 0, 1]
merge(x range(2) 2) == [0, 1, 0, 1, 2, 3, 4]
remove(x 1) == [0, 2, 3, 4]
remove(x 2 4) == [0, 1]
logical:
not(true) == false
any(false true false) == true
all(true true false) == false
general: (még mindig hajlok picit a log
felé)
print("asd")
functional:
map(sum(1) range(3)) == [1, 2, 3] // ez kicsit káoszos, de megszokható: a map az odarakja paraméternek minden elemet külön külön az első függvénynek
filtertrue(equal(2) range(3)) == 2
functional kiegészítés:
vesz mindegyikből egy elemet és a fn-nek adja paraméterként, tehát: fn( iter1[0], iter2[0] ), fn( iter1[1], iter2[1] ), ...
pl: reduce( sum, [1, 2, 3, 4, 5]) == ((((1+2)+3)+4)+5)
párhuzamosan vesz mindegyik iterből egy elemet és visszaadja őket tuple-ként, pl: zip ([1, 2, 3], [5, 4, 3, 2]) == [(1, 5), (2, 4), (3, 3)]
(legrövidebb végénél megáll)
azokat az elemeket adja vissza, amikre igaz a callable (lehet fordított működésű "filterfalse" is)
operátorok:
maradéktalan osztás, ami megegyezik ezzel: floor(div(a, b))
maradéktalan osztás + maradék tuple: (floordiv(a, b), mod(a, b))
igaz, ha bármely elem igaz (ha üres, hamis)
igaz, ha minden elem igaz (ha üres, igaz: minden zöldésget megettem a tányérról!!4! igaz, nem volt rajta zöldség)