[Racket] Ferti hydroponic nutrient solver, redux.
Factor out average-crop-requirement-nutrient-values.
Changed files
handlers.rkt
@@ -70,23 +70,8 @@
70
70
(define (create-target req)
71
71
(define-values (effective-on crop-requirement-mix)
72
72
(formlet-process (targets-formlet) req))
73
Removed:
74
Removed:
(define (average-nutrient-values mix)
75
Removed:
(define average-values
76
Removed:
(for/fold ([acc (hash)]) ([pair (in-list mix)])
77
Removed:
(define crop-requirement (car pair))
78
Removed:
(define percentage (/ (cdr pair) 100))
79
Removed:
(for/fold ([acc acc])
80
Removed:
([nv (in-list (get-crop-requirement-values crop-requirement))])
81
Removed:
(define n (car nv))
82
Removed:
(define v (cdr nv))
83
Removed:
(hash-update acc n
84
Removed:
(λ (old) (+ old (* v percentage)))
85
Removed:
(λ () (* v percentage))))))
86
Removed:
(for/list ([(k v) (in-hash average-values)])
87
Removed:
(cons k v)))
88
Removed:
89
Removed:
(define target-nutrient-values (average-nutrient-values crop-requirement-mix))
73
Added:
(define target-nutrient-values
74
Added:
(average-crop-requirement-nutrient-values crop-requirement-mix))
90
75
(create-nutrient-target! effective-on target-nutrient-values)
91
76
(redirect-to "/"))
92
77
models/crop-requirement.rkt
@@ -143,3 +143,20 @@
143
143
(query-exec (current-conn)
144
144
(delete #:from crop_requirements
145
145
#:where (= id ,id))))
146
Added:
147
Added:
148
Added:
;; Helpers
149
Added:
150
Added:
(define (average-crop-requirement-nutrient-values mix)
151
Added:
(define average-values
152
Added:
(for/fold ([acc (hash)]) ([pair (in-list mix)])
153
Added:
(define crop-requirement (car pair))
154
Added:
(define percentage (/ (cdr pair) 100))
155
Added:
(for/fold ([acc acc])
156
Added:
([nv (in-list (get-crop-requirement-values crop-requirement))])
157
Added:
(match-define (cons n v) nv)
158
Added:
(hash-update acc n
159
Added:
(λ (old) (+ old (* v percentage)))
160
Added:
(λ () (* v percentage))))))
161
Added:
(for/list ([(n v) (in-hash average-values)])
162
Added:
(cons n v)))