我有一个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)
}如果你们能帮我澄清这件事,我会非常感激的。谢谢!
发布于 2015-04-08 17:08:07
您的类型很好,但是您的实现不会终止。你可能是说:
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)))https://stackoverflow.com/questions/29520957
复制相似问题