Haskell错误消息期待多一个参数

时间:2015-01-15 18:33:31

标签: haskell compiler-errors

我试图解决这种类似的设备:e ^ x + sqrt(x)= d,当d已知时。它没有分析解决方案,因此我使用二进制搜索的变体来解决它:

helper x = exp x + sqrt x

ex2 c0 c1 x 
| abs (h0 - h1) < 10 ^^ (-6) = c0
| hm < x = ex2 m c1 x
| hm >= x = ex2 c0 m x
where h0 = helper c0
  h1 = helper c1
  m = c0 + (c1 - c0)/2
  hm = helper m

这可以从ghci中正常工作(c0和c1是搜索的最小值和最大值)但是我在从stdio读取参数x时遇到了问题:

main = do
 seed <- getLine
 let output = show ex2 0 6 (read seed :: Floating) -- Result is somewhere between helper(0) and helper(6)
     in putStrLn output

这破坏了我的代码。它不会在ghci中编译或加载。我收到此错误消息:

ex2.hs:14:46:     期待“浮动”的另一个论点     期望一种类型,但'浮动'有类型'* - &gt;约束'     在表达式类型签名中:浮动     在'show'的第四个参数中,即'(读取种子::浮动)'     在表达式中:show ex2 0 6(读取种子::浮动)

有人可以解释一下它的含义以及如何修复我的主要功能吗?

1 个答案:

答案 0 :(得分:1)

let .. line:

中缺少括号

另一个错误:show(ex2 ...(读取seed :: Double))需要括号。 - chi