我有这个Haskell功能,我试图转换成Scala。
在Haskell中你有一个像:
这样的函数trifecta :: (a->b) -> (b->c) -> (c->d) -> a -> d
我还没有在网上找到任何关于在Scala中转换这些类型签名的内容。
这是我到目前为止所做的,但我不太确定这是否正确。
Scala代码:
def trifecta[A,B,C,D](a: (A=>B), b: (B=>C), c: (C=>D), d: A): D = {
trifecta(a, b, c, d)
}
如果你们能帮助我澄清一下,我真的很感激。谢谢!
答案 0 :(得分:6)
您的类型很好,但您的实施不会终止。你可能意味着:
def trifecta[A,B,C,D](a: A=>B, b: B=>C, c: C=>D, d: A): D = c(b(a(d)))
如果你想像Haskell版本那样使用它,你需要单独的参数列表:
def trifecta[A,B,C,D](a: A=>B)(b: B=>C)(c: C=>D)(d: A): D = c(b(a(d)))