2.5

def compose [A,B,C] (f: B => C, g: A => B): A => C

Solution

object HelloWorld {

    def compose[A,B,C](f: B => C, g: A => B): A => C = {
        a => f(g(a))
    }    

    def main(args: Array[String]) = {
        val double = (a:Int) => 2 * a
        val toString = (a:Int) => "new value " + a
        val c = compose(toString, double)
        println("original value 2",c(2))
    }
}

Run

(original value 2,new value 4)