Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Zad1 extends App {
- def sum(l: List[Option[Int]]): Option[Int] = {
- @annotation.tailrec
- def sumTailRec(list: List[Option[Int]], accum: Option[Int]): Option[Int] = {
- list match {
- case Nil => accum
- case head :: tail => sumTailRec(tail, (accum ++ head).reduceOption(_ + _))
- }
- }
- sumTailRec(l, None)
- }
- val lista: List[Option[Int]] = List(Some(1), Some(2), Some(3), None)
- println(sum(lista))
- }
- // #########################################
- object Zad2 extends App {
- def compose[A, B, C](f: A => B, g: B => C): A => C = arg => g(f(arg))
- def prod[A,B,C,D](f: A => C, g: B => D): (A, B) => (C, D) = (x,y) => (f(x),g(y))
- def lift[A,T](op: (T,T) => T)(f: A => T, g: A => T): A => T = x => op(f(x), g(x))
- def fun1(a: Int): Int = a + 2
- def fun2(b: Int): Int = b - 6
- def funop(c : Int, d: Int): Int = c * d
- println(compose(fun1, fun2)(2))
- println(prod(fun1, fun2)(2, 1))
- println(lift(funop)(fun1, fun2)(2))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement