Итак, я пока использовал 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)
Ошибка, которую я получаю:
ternary.hs:11:25: parse error on input `c'
Любые идеи?
else
. В большинстве других языковelse
является необязательным. В Haskellif
больше похоже на?:
, чем наif
в других языках:if x then y
похоже на записьx ? y
в C и выдаст вам ошибку по тем же причинам: это выражение, и оно не может не иметь значения, когда условие ложно. - person Amadan   schedule 20.03.2015