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
(filtertrue (lambda x (greater x 1)) [1, 2, 3]) == [2, 3])
amúgy ok
vizuális / kártyás megjelenítést így képzelem: megadsz egy listát, automatikusan mutatja, hogy milyen elemeket ad vissza
ha listád van kételemű tuple-ökről, akkor azonnal kiírná, hogy egy körben ezeket kapod
a tuple elemei lehetnének nevesítettek (akár kötelezően (?)) és akkor a for loopodon belül azonnal használhatod ezeket a neveket
ha mapping elemeit rakod for-ba, akkor kapsz egy (key, value) tuple-t, amit használhatsz ezekkel a nevekkel, de adhatnál nekik aliast és mellette megjelenne, hogy : key, : value a kártya tetején a forrás iterable alatt
lenne egy filter mező, mint a comprehension syntax if része: (func(x) for x in list if predicate(x))
az alapvető feldolgozás map lenne, tehát lenne egy funkció mező is
akár "break" mező is lehet, ami ugyancsak egy vizsgálat: ha igaz, akkor nem ad vissza több elemet