changeset 966:c2fe1dbaceb9

Paging + filtering seemingly working, but runtime system isn't GCing signals properly, so performance goes south quickly
author Adam Chlipala <adamc@hcoop.net>
date Sat, 19 Sep 2009 14:56:03 -0400
parents e9c5992bc9bc
children 1b80b9df0d32
files demo/more/dlist.ur
diffstat 1 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/demo/more/dlist.ur	Sat Sep 19 14:42:36 2009 -0400
+++ b/demo/more/dlist.ur	Sat Sep 19 14:56:03 2009 -0400
@@ -83,15 +83,22 @@
                                        val pos = case prev of
                                                      None => headPos dl
                                                    | Some prev => tailPos prev tl tlTop
-                                       val len = Option.mp (fn n => n - 1) len
                                    in
-                                       <xml><dyn signal={b <- filter v;
-                                                         return (if b then
-                                                                     f v pos
-                                                                 else
-                                                                     <xml/>)}/>
-                                         <dyn signal={tl' <- signal tl;
-                                                      return (render' (Some tl) tl' len)}/></xml>
+                                       <xml>
+                                         <dyn signal={b <- filter v;
+                                                      return <xml>
+                                                        {if b then
+                                                             f v pos
+                                                         else
+                                                             <xml/>}
+                                                        <dyn signal={tl' <- signal tl;
+                                                                     return (render' (Some tl) tl'
+                                                                                     (if b then
+                                                                                          Option.mp (fn n => n - 1) len
+                                                                                      else
+                                                                                          len))}/>
+                                                      </xml>}/>
+                                       </xml>
                                    end
 
                        fun skip pos hd =