aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/probabilities
diff options
context:
space:
mode:
authorKonrad Hinsen <konrad.hinsen@laposte.net>2009-04-23 08:25:24 +0000
committerKonrad Hinsen <konrad.hinsen@laposte.net>2009-04-23 08:25:24 +0000
commit6c99b025c0a2b1afa6736234d3edbf7ea29b1d22 (patch)
tree1344fe43bf5246b442c6617d265c89d9368fb8e1 /src/clojure/contrib/probabilities
parent5427bcb8dc89b1813666aeaa65e51260813c423b (diff)
monads: better default for which-m-plus in maybe-t
Diffstat (limited to 'src/clojure/contrib/probabilities')
-rw-r--r--src/clojure/contrib/probabilities/examples_finite_distributions.clj10
-rw-r--r--src/clojure/contrib/probabilities/finite_distributions.clj17
2 files changed, 16 insertions, 11 deletions
diff --git a/src/clojure/contrib/probabilities/examples_finite_distributions.clj b/src/clojure/contrib/probabilities/examples_finite_distributions.clj
index a7ae7618..ca301654 100644
--- a/src/clojure/contrib/probabilities/examples_finite_distributions.clj
+++ b/src/clojure/contrib/probabilities/examples_finite_distributions.clj
@@ -176,8 +176,9 @@
(normalize-cond
(domonad cond-dist-m
[die prior
- number (get dice die)]
- (when (= number observation) die))))
+ number (get dice die)
+ :when (= number observation) ]
+ die)))
; Add one observation.
(add-observation prior 1)
@@ -197,7 +198,8 @@
(normalize-cond
(domonad
[die prior
- nums (n-nums die)]
- (when (= nums observations) die))))))
+ nums (n-nums die)
+ :when (= nums observations)]
+ die)))))
(add-observations prior [1 3 7])
diff --git a/src/clojure/contrib/probabilities/finite_distributions.clj b/src/clojure/contrib/probabilities/finite_distributions.clj
index 7dcc280f..3b76b318 100644
--- a/src/clojure/contrib/probabilities/finite_distributions.clj
+++ b/src/clojure/contrib/probabilities/finite_distributions.clj
@@ -114,13 +114,16 @@
)
-(defn cond-prob
- "Returns the conditional probability for the values in dist that satisfy
- the predicate pred."
- [pred dist]
- (normalize-cond
- (with-monad cond-dist-m
- (m-bind dist (fn [v] (m-result (when (pred v) v)))))))
+(with-monad cond-dist-m
+ (defn cond-prob
+ "Returns the conditional probability for the values in dist that satisfy
+ the predicate pred."
+ [pred dist]
+ (normalize-cond
+ (domonad
+ [v dist
+ :when (pred v)]
+ v))))
; Select (with equal probability) N items from a sequence