Skip to content

Instantly share code, notes, and snippets.

@jennifersmith
Last active December 25, 2015 01:49
Show Gist options
  • Save jennifersmith/6898512 to your computer and use it in GitHub Desktop.
Save jennifersmith/6898512 to your computer and use it in GitHub Desktop.
(defn make-cheese
[name
region
country
aoc?
pdo?
doc?
milk-origin
milk-origin-subspecies
pastuerized?
aging-time
mould-type])
(make-cheese
"Bleu de Gex"
"Jura"
"France"
true
false
false
:cows
"Montbéliard"
false
(weeks 3)
"Penicillium glaucum")
(make-cheese
"Stilton"
["Derbyshire" "Leicestershire" "Nottinghamshire"]
"United Kingdom"
false
true
false
:cows
"local"
true
(weeks 9)
"Penicillium roqueforti")
{ :name "Stilton"
:milk {:origin :cows
:origin-subspecies "local"
:pasteurized? true}
:mould-type "Penicillium roqueforti"
:region ["Derbyshire"
"Leicestershire"
"Nottinghamshire"]
:country "United Kingdom"
:aging-time nil}
(defn calculate-olfactory-offence
[{:keys [milk mould-type aging-time washing-solution]}]
(let [pasteurization-factor (if (:pasteurized? milk) 0.5 1)]
(* aging-time
(+
(milk-type->smell (:milk-type milk))
pasteurization-factor
(mould->smell mould-type)
(washing-solution->smell washing-solution->smell)))))
(defn lactose-levels [{:keys [milk quantity]}]
(if (:pastuerized? milk)
(calculate-pastuerized-lactose-levels quantity (:milk-origin milk))))
(defn sell-by-date [{:keys [milk mould-type]}]
(max (sell-by-date milk) (sell-by-date mould-type)))
(defn make-mozarella [citric-acid rennet milk]
(let [
[curds whey]
(separate
(stir-for (minutes 5)
(warm-to (farenheit 105)
(cut-into-squares
(leave-until-turned-into-curds (minutes 5)
(combine
(dissolve-in-water rennet)
(warm-to (farenheit 90) milk)))))))]))
(defn cheese-smell-analyser [cheeses-to-assess]
(->> cheeses-to-assess
(map parse-cheese-ids)
(map load-cheese-by-id)
(map #(select-keys % [:mould-type :aging-time]))
(map get-odour-level)
(reduce #(merge-with max %1 %2) {})))
;;;;;;;;
(defn milk->smell [{:keys [milk-type is-pasteurized?]}]
(+
(if is-pasterurized? 0.5 1)
(milk-type->smell milk-type)))
(defn lactose-levels [{:keys [milk-origin is-pasteurized?]}]
(if is-pasteurized?
(calculate-pasteurized-lactose-levels milk-origin)
(calculate-pasteurized-lactose-levels milk-origin)))
(defn make-mozarella [citric-acid rennet milk]
(zipmap [:curds :whey]
(separate
(stir-for (minutes 5)
(warm-to (farenheit 105)
(cut-into-squares
(leave-until-turned-into-curds
(minutes 5)
(combine
(dissolve-in-water rennet)
(warm-to (farenheit 90) milk)))))))))
(defn make-mozarella-improved [citric-acid rennet milk]
(let [
rennet-solution (dissolve-in-water rennet)
warmed-milk (warm-to (farenheit 90) milk)]
(->> [rennet-solution warmed-milk]
(combine)
(leave-until-turned-into-curds)
(cut-into-squares)
(warm-to (farenheit 105))
(stir-for (minutes 5))
(separate)
(zipmap [:curds :whey]))))
(defn cheese-smell-analyser-2 [cheeses-to-assess]
(->> cheeses-to-assess
(load-cheeses)
(map parse-cheese-ids)
(map get-odour-level)
(reduce calculate-stats)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment