Skip to content

Instantly share code, notes, and snippets.

@Deraen
Created August 20, 2014 10:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Deraen/b2ea8737bbcb8007d679 to your computer and use it in GitHub Desktop.
Save Deraen/b2ea8737bbcb8007d679 to your computer and use it in GitHub Desktop.
Clojure bootcamp, 20.8.2014, muistiinpanot / hands-on
(ns working-with-data
(:require [metosin.dataset.pizzas :refer [pizzas]]))
(conj pizzas {:name "Speciale"})
; v1
(filter (fn [pizza]
(if (< (get pizza :price) 8)
true))
pizzas)
;; => ({:toppings {:ham 3, :pineaple 2, :blue-cheese 1}, :name "Americana", :price 7.9} {:toppings {:mozarella 4, :tomato 3}, :name "Margherita", :price 7.2})
; v2
(filter (fn [pizza]
(< (get pizza :price) 8))
pizzas)
;; => ({:toppings {:ham 3, :pineaple 2, :blue-cheese 1}, :name "Americana", :price 7.9} {:toppings {:mozarella 4, :tomato 3}, :name "Margherita", :price 7.2})
; v3
(filter (fn [pizza]
(< (:price pizza) 8))
pizzas)
; v4
(filter (fn [{price :price}]
(< price 8))
pizzas)
;; => ({:toppings {:ham 3, :pineaple 2, :blue-cheese 1}, :name "Americana", :price 7.9} {:toppings {:mozarella 4, :tomato 3}, :name "Margherita", :price 7.2})
; v5
(filter #(< (:price %) 8) pizzas)
;; => ({:toppings {:ham 3, :pineaple 2, :blue-cheese 1}, :name "Americana", :price 7.9} {:toppings {:mozarella 4, :tomato 3}, :name "Margherita", :price 7.2})
; v1
(map (fn [pizza]
(:name pizza))
pizzas)
;; => ("Alla Pollo" "Americana" "Margherita")
; v2
(map :name pizzas)
;; => ("Alla Pollo" "Americana" "Margherita")
(def numeroita (range 100))
(def isompia (map (fn [n]
(println n)
(inc n))
numeroita))
;; => #'working-with-data/isompia
; acc = accumulator
(reduce (fn [acc pizza]
(+ acc (:price pizza)))
0
pizzas)
;; => 23.400000000000002
;; => 0
; v1
(map clojure.string/upper-case (map :name (filter (fn [{price :price}]
(< price 8))
pizzas)))
;; => ("AMERICANA" "MARGHERITA")
(macroexpand-1 '(->> pizzas
(filter (fn [{price :price}]
(< price 8)))
(map :name)
(map clojure.string/upper-case)))
;; => (map clojure.string/upper-case (map :name (filter (fn [{price :price}] (< price 8)) pizzas)))
;; => ("AMERICANA" "MARGHERITA")
;; => ("AMERICANA" "MARGHERITA")
; v n+1
; fn-> threading macro
(filter (fn-> :price (< 8)) pizzas)
(doall isompia)
;; => nil
;; => 33
;; => 32
;; => 31
;; => 1
;; => 1
(defn second [[_ x]]
x)
(def a {:foo 1})
(a :foo)
;; => 1
;; => 1
;; => 1
;; => nil
;; Mitä tapahtui kun ei avainta..
(< (get {} :price) 8)
;; => true
;; => 0
;; => nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment