Zipper készítése bináris fához.
A zipperek tisztán funkcionális módját kínálják annak, hogy egy adatszerkezetben navigáljunk és azt módosítsuk. Lényegében egy adatszerkezetet és egy arra mutató pointert tartalmaznak (ezt nevezzük fókusznak).
Például egy rózsafa esetén (amelynek minden csomópontja egy értéket és a gyermekcsomópontok listáját tartalmazza) egy zipper a következő műveleteket támogathatja:
from_tree (zippert készít egy rózsafából, a fókusz a gyökércsomóponton van)to_tree (kiveszi a rózsafát a zipperből)value (visszaadja a fókuszcsomópont értékét)prev (a fókuszt az ugyanazon szülő előző gyermekére mozgatja,
új zippert ad vissza)next (a fókuszt az ugyanazon szülő következő gyermekére mozgatja, új
zippert ad vissza)up (a fókuszt a szülőre mozgatja, új zippert ad vissza)set_value (beállítja a fókuszcsomópont értékét, új zippert ad vissza)insert_before (új részfát szúr be a fókuszcsomópont elé, ez lesz a
fókuszcsomópont prev-je, és új zippert ad vissza)insert_after (új részfát szúr be a fókuszcsomópont után, ez lesz a
fókuszcsomópont next-je, és új zippert ad vissza)delete (eltávolítja a fókuszcsomópontot és az összes részfáját; a fókusz a
next csomópontra kerül, ha lehetséges, egyébként a prev csomópontra, ha
lehetséges, egyébként a szülőcsomópontra, és új zippert ad vissza)Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) OCaml nyelvet 60 feladat segítségével, valódi emberi mentorálással, mindez ingyen.