[Racket] Ferti hydroponic nutrient solver, redux.
Change nutrient seed list to alist.
db/seed.rkt
@@ -20,24 +20,23 @@
20
20
(define (seed-nutrients!)
21
21
(define nutrient-names (map nutrient-name (get-nutrients)))
22
22
(define default-nutrients
23
Removed:
'(("Nitrate Nitrogen" "NNO3") ("Phosphorus" "P")
24
Removed:
("Potassium" "K")
25
Removed:
("Calcium" "Ca")
26
Removed:
("Magnesium" "Mg")
27
Removed:
("Sulfur" "S")
28
Removed:
("Sodium" "Na")
29
Removed:
("Chloride" "Cl")
30
Removed:
("Silicon" "Si")
31
Removed:
("Iron" "Fe")
32
Removed:
("Zinc" "Zn")
33
Removed:
("Boron" "B")
34
Removed:
("Manganese" "Mn")
35
Removed:
("Copper" "Cu")
36
Removed:
("Molybdenum" "Mo")
37
Removed:
("Ammonium Nitrogen" "NNH4")))
23
Added:
'(("Nitrate Nitrogen" . "NNO3") ("Phosphorus" . "P")
24
Added:
("Potassium" . "K")
25
Added:
("Calcium" . "Ca")
26
Added:
("Magnesium" . "Mg")
27
Added:
("Sulfur" . "S")
28
Added:
("Sodium" . "Na")
29
Added:
("Chloride" . "Cl")
30
Added:
("Silicon" . "Si")
31
Added:
("Iron" . "Fe")
32
Added:
("Zinc" . "Zn")
33
Added:
("Boron" . "B")
34
Added:
("Manganese" . "Mn")
35
Added:
("Copper" . "Cu")
36
Added:
("Molybdenum" . "Mo")
37
Added:
("Ammonium Nitrogen" . "NNH4")))
38
38
(with-tx (for ([pair (in-list default-nutrients)])
39
Removed:
(define name (first pair))
40
Removed:
(define formula (second pair))
39
Added:
(match-define (cons name formula) pair)
41
40
;; Ensure idempotence
42
41
(unless (member name nutrient-names)
43
42
(create-nutrient! name formula)))))