gpt4 book ai didi

scala - Scala 中的 Haskell 函数类型签名

转载 作者:行者123 更新时间:2023-12-04 17:55:47 25 4
gpt4 key购买 nike

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

如果你们能帮我澄清一下,我将不胜感激。谢谢!

最佳答案

您的类型没问题,但您的实现不会终止。你的意思可能是:

def trifecta[A,B,C,D](a: A=>B, b: B=>C, c: C=>D, d: A): D = c(b(a(d)))

如果你想让它像 Haskell 版本一样被柯里化(Currying),你需要单独的参数列表:

def trifecta[A,B,C,D](a: A=>B)(b: B=>C)(c: C=>D)(d: A): D = c(b(a(d)))

关于scala - Scala 中的 Haskell 函数类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com