summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--appl/lib/lists.b13
-rw-r--r--dis/lib/lists.disbin1265 -> 1309 bytes
-rw-r--r--include/version.h2
3 files changed, 9 insertions, 6 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)
diff --git a/dis/lib/lists.dis b/dis/lib/lists.dis
index 9f5c082a..58ce79ab 100644
--- a/dis/lib/lists.dis
+++ b/dis/lib/lists.dis
Binary files differ
diff --git a/include/version.h b/include/version.h
index 8fb4defe..66fe5d84 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define VERSION "Fourth Edition (20110404)"
+#define VERSION "Fourth Edition (20110406)"