Common LISP eCommerce/Finance mit SinnerSchrader - in Java Security / Visual Analytics bei Plath Mobile Entertainment bei HEROLABS - mit Clojure About me
laufen iOS Client, Clojure Server, MongoDB Backend Typische Aufgaben: Processing eines Streams von Fußball-Events, Fanout von Scoring an alle Nutzer HERO11
sequences indexOfAny sucht nach einem Set von Characters, index-of-any kann beliebige Prädikate verwenden indexOfAny liefert den ersten Treffer, index-filter liefert alle Treffer und kann mit anderen Filtern kombiniert werden. SIMPLICITY
sequences indexOfAny sucht nach einem Set von Characters, index-of-any kann beliebige Prädikate verwenden indexOfAny liefert den ersten Treffer, index-filter liefert alle Treffer und kann mit anderen Filtern kombiniert werden. find the third occurrence of “heads” in a series of coin flips: (nth (index-filter #{:h} [:t :t :h :t :h :t :t :t :h :h]) 2) 㱺8 SIMPLICITY
sequences indexOfAny sucht nach einem Set von Characters, index-of-any kann beliebige Prädikate verwenden indexOfAny liefert den ersten Treffer, index-filter liefert alle Treffer und kann mit anderen Filtern kombiniert werden. find the third occurrence of “heads” in a series of coin flips: (nth (index-filter #{:h} [:t :t :h :t :h :t :t :t :h :h]) 2) 㱺8 simpler, less error prone, and more general SIMPLICITY
should be a function of 2 arguments. If val is not supplied, returns the result of applying f to the first 2 items in coll, then applying f to that result and the 3rd item, etc. If coll contains no items, f must accept no arguments as well, and reduce returns the result of calling f with no arguments. If coll has only 1 item, it is returned and f is not called. If val is supplied, returns the result of applying f to val and the first item in coll, then applying f to that result and the 2nd item, etc. If coll contains no items, returns val and f is not called. Funktional
und Objekte, sondern generische Maps. Später evtl. ersetzt durch records (die dann intern in Java-Klassen abgebildet werden). Achtung: Lokalität! Wo erzeuge ich Objekte? (encapsulation, ...) Domänenmodell
auf Spring gesetzt. Wie macht man das in Clojure? Inversion of Control Dependency Injection (um gegen Interface entwickeln zu können, nicht konkrete Klassen)
;; Create a word frequency map out of a large string s. ;; `s` is a long string containing a lot of words :) (reduce #(assoc %1 %2 (inc (%1 %2 0))) {} (re-seq #"\w+" s)) ; (This can also be done using the `frequencies` function.) Spring
Erhöht die Testbarkeit, weil man in der REPL ja nicht immer das gesamte System hochfahren möchte. Wenn man mit einem ersten Dra zufrieden ist, dann macht man Tests daraus, verfeinert diese und verbessert die Funktion. Das Ergebnis ist eine Funktion und ein Satz von Unit-Tests Mein Liebling in schwierigen Fällen: (debug-repl) https://github.com/GeorgeJahad/debug-repl
Änderung der Denke notwendig... Arbeit ohne "mal schnell eine Variable hochzählen" ist nicht immer einfach. Weniger Code (d.h. weniger zu lesen und zu warten, was 90% der Arbeit ausmacht) More fun - just dive into your program using the REPL