otg*_*g6e 0 syntax haskell parse-error
所以到目前为止我只使用Haskell进行简单的教程,下面的代码给我一个"解析错误"......我知道这与我的语法有关但我不知道是什么
--ternarySearch
7 ternarySearch :: (Float -> Float) -> Float -> Float -> Float -> Float
8 ternarySearch f a b tau = do
9 if (abs(b-a) < tau)
10 then return ((a+b)/2)
11 c = (a + (b-a)/3)
12 d = (b - (b-a)/3)
13 if f(c) < f(d)
14 then return (ternarySearch f c b tau)
15 else return (ternarySearch f a d tau)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ternary.hs:11:25: parse error on input `c'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
你做了很多错事:
Monad.return:我认为你把returnHaskell的命令式语言混淆了.使用警卫尝试做的更好的版本:
ternarySearch :: (Float -> Float) -> Float -> Float -> Float -> Float
ternarySearch f a b tau
| abs (b-a) < tau = (a+b) / 2
| f c < f d = ternarySearch f c b tau
| otherwise = ternarySearch f a d tau
where
c = a + (b-a)/3
d = b - (b-a)/3
Run Code Online (Sandbox Code Playgroud)
话虽如此,我建议你阅读一些书,以便更好地理解.