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
Új ötlet
Ha a változókat függvényként kezeljük, akkor annak megvan az az előnye, hogy primitíveket is meg tudnánk hívni függvényként, ami megoldaná az index alapján elérés problémáját, mert szerintem az tök csúnya, hogy
(get lista_neve index)
, de azért új szintaktikát sem szívesen vezetnék be. Szóval lehetne az hogy:(lista_neve index)
és kész! Komolyabb dolgok még nem jutottak eszembe továbbá az sem világos, hogy milyen előnye van ennek a megoldásnak az int és float-okkal kapcsolatban.