scala/lib.scala
author Christian Urban <christian.urban@kcl.ac.uk>
Thu, 22 Feb 2024 14:06:37 +0000
changeset 299 a2707a5652d9
parent 221 18905d086cbb
permissions -rw-r--r--
test

package object lib {

//some list functions
//slow version
//def tl[A](xs: List[A]) : List[A] = xs match {
//  case Nil => Nil
//  case x::xs => xs
//}

def tl[A](xs: List[A]) : List[A] = 
  try { xs.tail } catch { case _:UnsupportedOperationException => Nil }

def hd[A](xs: List[A]) : A = xs.head

//slow version
//def nth_of[A](xs: List[A], n: Int) = 
//  if (n <= xs.length) Some(xs(n)) else None 

def nth_of[A](xs: List[A], n: Int) = 
  try { Some(xs(n)) } catch { case _:IndexOutOfBoundsException => None }

//some map functions
def dget(m: Map[Int, Int], n: Int) = m.getOrElse(n, 0)

//some string functions
def join[A](xs: List[A]) = xs.foldLeft("")(_.toString + _)

}