-
def isort(xs: List[Int]): List[Int] =
if (xs.isEmpty) Nil
else insert(xs.head, isort(xs.tail))
def insert(x: Int, xs: List[Int]): List[Int] =
if (xs.isEmpty) List(x)
else if (x < xs.head) x::xs
else xs.head :: insert(x, xs.tail)
-
def len(l: List[Any]):Int = {
def len_pom(n: Int, lpom: List[Any]):Int = {
if (lpom.isEmpty) n
else len_pom(n+1, lpom.tail)
}
len_pom(0,l)
}
-
def squareList(xs: List[Int]): List[Int] = xs match {
case List() => xs
case y :: ys => y*y :: squareList(ys)
}
def squareList2(xs: List[Int]): List[Int] =
xs map (x=>x*x)
-
def forall[T](list: List[T], condition: T => Boolean) =
(list filter (x => !condition(x))) == Nil
def exists[T](list: List[T], condition: T => Boolean) =
(list filter (x => condition(x))) != Nil
-
def mapFun[A, B](xs: List[A], f: A => B): List[B] =
(xs :\ List[B]()){ (item,list) => f(item)::list }
def lengthFun[A](xs: List[A]): int =
(0 /: xs){ ((len,item) => len+1) }