Scala 组合方法的实现

Scala 组合方法的实现,scala,generics,Scala,Generics,请帮助我了解实现自己的“编写”两个功能的方法。 我喜欢唱歌 def compose[A,B,C](g:B=>C,f:A=>B):A=>C=? 我想写方法“h”,它是两个函数(f和g)或g(f)的组合 您需要返回一个函数,该函数接收类型为a的x,并返回一个函数g,该函数返回C,并应用于应用于x的函数f def compose[A,B,C](g:B=>C,f:A=>B):A=>C=x=>g(f(x)) 然后你可以定义f和g valf=(x:Int)=>x*2 val g=(x:Int)=>x*4

请帮助我了解实现自己的“编写”两个功能的方法。 我喜欢唱歌
def compose[A,B,C](g:B=>C,f:A=>B):A=>C=?
我想写方法“h”,它是两个函数(f和g)或g(f)的组合


您需要返回一个函数,该函数接收类型为a的x,并返回一个函数g,该函数返回C,并应用于应用于x的函数f

def compose[A,B,C](g:B=>C,f:A=>B):A=>C=x=>g(f(x))
然后你可以定义f和g

valf=(x:Int)=>x*2
val g=(x:Int)=>x*4
h是这两个函数的组合

valh=compose(f,g)
val结果=h(42)

我不明白,问题是什么?写作是一项琐碎的任务,你已经完成了。或者您是在问如何改进类型推断?抱歉,这是我的错误,您是对的,这是一项微不足道的任务,但我在解决方案中发现了错误
…=(a:Int)=>g(f(a))
在我的解决方案中,a是可变的,但真正的答案是
…=(a) =>g(f(a))
,其中a是a
val res: Int = compose[Int, Int, Int]((b: Int) => b + 1, (a: Int) => a + 1)(1)