diff options
| author | forsyth <forsyth@vitanuova.com> | 2011-04-06 22:37:27 +0100 |
|---|---|---|
| committer | forsyth <forsyth@vitanuova.com> | 2011-04-06 22:37:27 +0100 |
| commit | c2ef9233feb49e4dc90f4f58fc499eb2c607bf7d (patch) | |
| tree | c634092fed032c3f87b72ac8051031847dbc39f1 /appl/lib | |
| parent | fd7058f9a883832e948d667b63c56178e37b1e15 (diff) | |
20110406-2237
Diffstat (limited to 'appl/lib')
| -rw-r--r-- | appl/lib/lists.b | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/appl/lib/lists.b b/appl/lib/lists.b index 2210c33e..52e007bb 100644 --- a/appl/lib/lists.b +++ b/appl/lib/lists.b @@ -88,18 +88,21 @@ last[T](l: list of T): T } # delete the first instance of x in l -delete[T](x: T, l: list of T): list of T +delete[T](x: T, al: list of T): list of T for { T => eq: fn(a, b: T): int; } { - o: list of T; - for(; l != nil; l = tl l) + for(l := al; l != nil; l = tl l){ if(T.eq(x, hd l)){ + o: list of T; + for(; al != l; al = tl al) + o = hd al :: o; l = tl l; for(; o != nil; o = tl o) l = hd o :: l; - break; + return l; } - return l; + } + return al; } pair[T1, T2](l1: list of T1, l2: list of T2): list of (T1, T2) |
