(defrecord Pos [name value]
Object
(toString [this]
(str "<Name: " name ", Value: " value ">")))
(def actions [(Pos. "IBM", -50)
(Pos. "ACCOR", -30);
(Pos. "IBM", -10);
(Pos. "APPLE", -20);
(Pos. "AIRFRANCE", -20)])
(def options [(Pos. "IBM", 55)
(Pos. "ACCOR", 40)
(Pos. "AIRFRANCE", 10)
(Pos. "LUFTHANSA", 100)])
(defn process [options actions]
(cond (nil? (seq options)) actions
(nil? (seq actions)) options
:else (for [option options
action actions
:when (= (:name option)
(:name action))]
[(Pos. (:name option)
(min 0 (+ (:value option)
(:value action))))
(Pos. (:name option)
(max 0 (+ (:value option)
(:value action))))])))
(defn match [[options actions]]
(reduce #(do [(conj (first %1) (first %2))
(conj (second %1) (second %2))])
[[] []]
(process options actions)))
(println "Options:" (map str options))
(println "Actions:" (map str actions))
(println "--after match--")
(let [[options actions] (match [options actions])]
(println "Options:" (map str options))
(println "Actions:" (map str actions)))
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en