equal
deleted
inserted
replaced
16 object Linear_Set extends IterableFactory[Linear_Set] |
16 object Linear_Set extends IterableFactory[Linear_Set] |
17 { |
17 { |
18 private val empty_val: Linear_Set[Nothing] = new Linear_Set[Nothing](None, None, Map(), Map()) |
18 private val empty_val: Linear_Set[Nothing] = new Linear_Set[Nothing](None, None, Map(), Map()) |
19 override def empty[A]: Linear_Set[A] = empty_val.asInstanceOf[Linear_Set[A]] |
19 override def empty[A]: Linear_Set[A] = empty_val.asInstanceOf[Linear_Set[A]] |
20 |
20 |
21 def from[A](entries: IterableOnce[A]): Linear_Set[A] = (empty[A] /: entries)(_.incl(_)) |
21 def from[A](entries: IterableOnce[A]): Linear_Set[A] = entries.foldLeft(empty[A])(_.incl(_)) |
22 |
22 |
23 override def newBuilder[A]: mutable.Builder[A, Linear_Set[A]] = new Builder[A] |
23 override def newBuilder[A]: mutable.Builder[A, Linear_Set[A]] = new Builder[A] |
24 private class Builder[A] extends mutable.Builder[A, Linear_Set[A]] |
24 private class Builder[A] extends mutable.Builder[A, Linear_Set[A]] |
25 { |
25 { |
26 private var res = empty[A] |
26 private var res = empty[A] |
81 prevs + (elem2 -> elem) + (elem -> elem1)) |
81 prevs + (elem2 -> elem) + (elem -> elem1)) |
82 } |
82 } |
83 } |
83 } |
84 |
84 |
85 def append_after(hook: Option[A], elems: Iterable[A]): Linear_Set[A] = // FIXME reverse fold |
85 def append_after(hook: Option[A], elems: Iterable[A]): Linear_Set[A] = // FIXME reverse fold |
86 ((hook, this) /: elems) { |
86 elems.foldLeft((hook, this)) { |
87 case ((last, set), elem) => (Some(elem), set.insert_after(last, elem)) |
87 case ((last, set), elem) => (Some(elem), set.insert_after(last, elem)) |
88 }._2 |
88 }._2 |
89 |
89 |
90 def delete_after(hook: Option[A]): Linear_Set[A] = |
90 def delete_after(hook: Option[A]): Linear_Set[A] = |
91 hook match { |
91 hook match { |