Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clojure-Web-Applikationen für Beginner

Clojure-Web-Applikationen für Beginner

Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: Ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

Neben den Grundlagen von Clojure werden Sie in dieser Session auch lernen wie man hiermit Web-Anwendungen umsetzten kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen werden Sie schnell sehen, dass der Einsatz einer rein funktionalen Programmiersprache sehr gut zum statuslosen Ansatz von HTTP passt.

Michael Vitz

February 19, 2016
Tweet

More Decks by Michael Vitz

Other Decks in Programming

Transcript

  1. Clojure > Lisp-Variante auf JVM > Funktionale Sprache > Dynamisch

    typisiert > komplettes mächtiges Macrosystem
  2. Datenstrukturen “Hello World" 3 3.14 3/2 \a :first foo #“Ch.*se”

    (“Hello”, :first) [3 4 3] { :name “Michael”, :company “innoQ” } #{3 4 3}
  3. Funktionen (+ 1 2) > 3 (:city {:name “innoQ” :city

    “Monheim”}) > “Monheim” (map inc [1 2 3]) > (2 3 4)
  4. Funktionen (fn [x y] (+ x y)) (def add (fn

    [x y] (+ x y))) (defn add
 [x y] (+ x y))
  5. Ring: Middleware (defn wrap-logging
 [handler] (fn [request] (print request)
 (let

    [response (handler request)] (print response) response)))
  6. Compojure: Handler (def handler (GET “/hello” [] “Hello, world!”)) (handler

    {:request-method :get, :uri “/hello”}) > {:body “Hello, world!”} (handler {:request-method :post, :uri “/hello”}) > nil
  7. Clojure: Macros “(case 3 1 “one” 2 “two” “more”)” Reader

    Text Data Structures (case 3 1 “one” 2 “two” “more”)
  8. Clojure: Macros Evaluator Data Structures (case 3 1 “one” 2

    “two” “more”) Data Structures (if (= 3 1) “one” (if (= 3 2) “two” “more”))
  9. Compojure: Macro (GET “/hello” [] “Hello, world!”) (fn [req] (if

    (and (= (:uri req) “/hello”) (= (:request-method req) :get)) {:body “Hello, world!”}))
  10. Compojure: Routes (def my-routes (routes (GET “/hello” [] “Hello!”) (GET

    “/bye” [] “Bye!”))) (defroutes my-routes (GET “/hello” [] “Hello!”) (GET “/bye” [] “Bye!”))
  11. Fazit > Funktionale Sprache ideal für Web-App > Verbreitung nimmt

    zu > Libraries anstelle von Frameworks > Community gesund und hilfsbereit
  12. Danke! Fragen? Kommentare? Michael Vitz | @michaelvitz [email protected] innoQ Deutschland

    GmbH Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 www.innoq.com Ohlauer Straße 43 10999 Berlin Germany Ludwigstraße 180 E D-63067 Offenbach Germany Kreuzstr. 16 D-80331 München Germany https://www.innoq.com/en/talks/2016/02/clojure-webapps/