Scala中的Haskell函数类型签名

时间:2015-04-08 17:04:05

标签: scala haskell

我有这个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)
}

如果你们能帮助我澄清一下,我真的很感激。谢谢!

1 个答案:

答案 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)))