嗨,这可能是一个非常简单的问题,但我遇到了问题。我尝试使用以下公式创建根函数:
roots a b c = ((-b + t)/a', (-b - t)/a')
where
t = b ^ 2 - 4 * a * c
a' = 2 * a
我现在正试图让它成为一个有条不紊的功能,但我似乎无法让它发挥作用这就是我所说的:
roots:: Double -> (Double -> (Double -> Double))
有人可以帮帮我吗?
谢谢!
答案 0 :(得分:3)
在Haskell中,函数会自动计算。因此,你不必做任何特别的事情来使它们成为咖喱。
您的函数根类型为roots:: Double -> Double -> Double -> (Double, Double)
。像这样的东西会因为蜷缩而出现问题:let a = roots 3.0
。
如果你的roots
函数没有被curry,那么它可能有这样的类型:roots:: (Double , Double , Double) -> (Double, Double)
这不是编写函数定义的正确方法。
答案 1 :(得分:0)
据我所知(但我不是专家,到目前为止只有Haskell的几个课程)获得3个输入参数并产生一个输出的函数(如在你的例子中)应该写成: / p>
roots:: Double -> Double -> Double -> Double
链中的最后一个元素(前两个)是返回类型,所有以前的元素都是输入参数类型。 这应该可以解决问题