summaryrefslogtreecommitdiff
path: root/AAC_search_monad.ml
diff options
context:
space:
mode:
authorGravatar Stephane Glondu <steph@glondu.net>2011-02-21 17:34:07 +0100
committerGravatar Stephane Glondu <steph@glondu.net>2011-02-21 17:34:07 +0100
commit3b5a4caffd5f3d0021ea2716025efc068a0b8968 (patch)
tree6c60828fd5e7301d6e1df697b9eb11f374b9b059 /AAC_search_monad.ml
parenta99db68ef72f70cbb59746f14e526e3cd7608ea8 (diff)
parent9216cffaaa1ef137ef5bdb5b290a930cc6198850 (diff)
Merge commit 'upstream/0.2.pl2'
Diffstat (limited to 'AAC_search_monad.ml')
-rw-r--r--AAC_search_monad.ml5
1 files changed, 5 insertions, 0 deletions
diff --git a/AAC_search_monad.ml b/AAC_search_monad.ml
index b7aabbd..09a6455 100644
--- a/AAC_search_monad.ml
+++ b/AAC_search_monad.ml
@@ -63,3 +63,8 @@ let to_list m = (fold (fun x acc -> x::acc) m [])
let sort f m =
N (List.map (fun x -> F x) (List.sort f (to_list m)))
+
+(* preserve the structure of the heap *)
+let filter f m =
+ fold (fun x acc -> (if f x then return x else fail ()) >>| acc) m (N [])
+