comparison demo/more/dlist.ur @ 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 f0afe61a6f8b
comparison
equal deleted inserted replaced
965:e9c5992bc9bc 966:c2fe1dbaceb9
81 | Cons (v, tl) => 81 | Cons (v, tl) =>
82 let 82 let
83 val pos = case prev of 83 val pos = case prev of
84 None => headPos dl 84 None => headPos dl
85 | Some prev => tailPos prev tl tlTop 85 | Some prev => tailPos prev tl tlTop
86 val len = Option.mp (fn n => n - 1) len
87 in 86 in
88 <xml><dyn signal={b <- filter v; 87 <xml>
89 return (if b then 88 <dyn signal={b <- filter v;
90 f v pos 89 return <xml>
91 else 90 {if b then
92 <xml/>)}/> 91 f v pos
93 <dyn signal={tl' <- signal tl; 92 else
94 return (render' (Some tl) tl' len)}/></xml> 93 <xml/>}
94 <dyn signal={tl' <- signal tl;
95 return (render' (Some tl) tl'
96 (if b then
97 Option.mp (fn n => n - 1) len
98 else
99 len))}/>
100 </xml>}/>
101 </xml>
95 end 102 end
96 103
97 fun skip pos hd = 104 fun skip pos hd =
98 case pos of 105 case pos of
99 0 => return hd 106 0 => return hd