Immutable Data and Functional JavaScript with Mori.

Mori maakt gebruik van ClojureScript compiler om standaard dingen van de Clojure library te gebruiken in JavaScript. Mori is een ideale oplossing om functie van Clojure te gebruiken binnen JavaScript omdat ClojureScript niet optimaal samen gaan. Met Mori is het mogelijk om makkelijk  een “immutable data structure” ook wel persistent data structure genoemd.

 

Wat is persistent data?

JavaScript maakt standaard gebruik van een transient data structure, dit houd in dat een waarde kan veranderd worden op een later moment door een ander stukje script. Dit maakt het erg lastig om te zoeken naar een “bug” in je code. Zoals op het voorbeeld te zien is bij “transient list” bevat a de getallen “1,2,3” op een later moment wil je weer de inhoud van a maar wil je hier wat aan toevoegen, in dit geval het cijfer 4. Als je dan kijkt naar wat de uitkomt is geworden van zowel a als het zelfde zijn. Dus past a aan.


Door middel van persistent data structure voorkom je dat iets het ander aanpast, zoals t zien is op het voorbeeld. In het voorbeeld bevat de getallen “1,2,3” later word er door een nieuw getal toegevoegd namelijk het cijfer 4. Als je naar het resultaat kijkt zie je dat  niet het zelfde zijn.

Het verschil tussen Mori en JS

Het enige verschil tussen Mori en JS de notatie van je code, de uitkomst is het zelfde. Het lijkt wel meer code, maar dankzij Mori is je code:

  • Overzichtelijker
  • Beter te de-buggen

 

Hieronder is een voorbeeld van waarom je Mori zou willen gebruiken. Stel je hebt:

  • 1 Constante waarde met gegevens erin, die je zelf hebt toegevoegd
  • Een functie die iets doet (die bv je collega heeft gemaakt) met jou waarde

Als er dan na die functie van je collega iets wilt doen met de waarde, en je niet weet wat de functie doet van je collega is de uitkomst een grote verassing als je alleen JavaScript gebruikt. Met Mori’s functie hashmap zal je waarde het zelfde blijven ongeacht wat ergens anders in de code gebeurt met je waarde.

Mijn ervaring met Mori

Zelf heb ik nog weinig ervaring met Mori, een collega had het op een dag over Mori en toen vroeg ik wat het was en kreeg ik een uitleg & instructie, vervolgens ben ik zelf een beetje gaan experimenteren om de hashmap door te krijgen van Mori. Wel weet ik dat Mori veel handiger is dan de normale javascript notatie van wegen de veiligheid van je waarden.