diff demo/more/dlist.ur @ 965:e9c5992bc9bc

Progress on sorting + filtering
author Adam Chlipala <adamc@hcoop.net>
date Sat, 19 Sep 2009 14:42:36 -0400
parents fbc3a0eef45a
children c2fe1dbaceb9
line wrap: on
line diff
--- a/demo/more/dlist.ur	Sat Sep 19 14:21:25 2009 -0400
+++ b/demo/more/dlist.ur	Sat Sep 19 14:42:36 2009 -0400
@@ -260,6 +260,21 @@
         Empty => return 0
       | Nonempty {Head = hd, ...} => size' hd
 
+fun numPassing' [t] (f : t -> signal bool) (dl'' : dlist'' t) =
+    case dl'' of
+        Nil => return 0
+      | Cons (x, dl'') =>
+        b <- f x;
+        dl'' <- signal dl'';
+        n <- numPassing' f dl'';
+        return (if b then n + 1 else n)
+
+fun numPassing [t] (f : t -> signal bool) (dl : dlist t) =
+    dl' <- signal dl;
+    case dl' of
+        Empty => return 0
+      | Nonempty {Head = hd, ...} => numPassing' f hd
+
 fun foldl [t] [acc] (f : t -> acc -> signal acc) =
     let
         fun foldl'' (i : acc) (dl : dlist'' t) : signal acc =