Mercurial > urweb
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 |