diff --git a/library/collection/List.scala b/library/collection/List.scala index f2f62924376d778e22966ba19ce085cf75600524..1f8253f13e1ed15163265a20a1e36bba01b11d71 100644 --- a/library/collection/List.scala +++ b/library/collection/List.scala @@ -64,6 +64,26 @@ sealed abstract class List[T] { case Cons(x,xs) => xs.reverse :+ x } } ensuring (res => (res.size == size) && (res.content == content)) + + def take(i: Int): List[T] = (this, i) match { + case (Nil(), _) => Nil() + case (Cons(h, t), i) => + if (i == 0) { + Nil() + } else { + Cons(h, t.take(i-1)) + } + } + + def drop(i: Int): List[T] = (this, i) match { + case (Nil(), _) => Nil() + case (Cons(h, t), i) => + if (i == 0) { + Cons(h, t) + } else { + t.drop(i-1) + } + } }