Итак, у меня только небольшой опыт работы с Haskell, и я работал над нижеприведенной программой, чтобы реализовать поиск, чтобы найти максимумы в функции, но я получаю нечетную ошибку. Когда я компилирую это говорит:странная ошибка синтаксиса haskell
MaximaSearch.hs: 26: 1: Ошибка синтаксического анализа (возможно, неправильно отступов или несоответствующие скобки)
Это линия, которая говорит, что «основные = делать», так что я думаю, что это какая-то отставая ошибку с моих отступов в коде предыдущей, но я не могу заметить ни одной ошибки ...
Вот код:
module Main where
g :: Float -> Float
--your function here
g x = cos(x^2)
--goldenSectionSearch
goldenSS :: (Float -> Float) -> Float -> Float -> Float -> Float -> Float
goldenSS f a b c tau
| (c-a) < tau * (abs b + abs x) = (c+a)/2
|f x > f b = let
t1|(c - b) > (b-a) = goldenSS f b x c tau
|otherwise = goldenSS f a x b tau
in t1
|otherwise = let
t2|(c-b) > (b-a) = goldenSS f a b x tau
|otherwise = goldenSS f x b c tau
in t2
where
let x
| (c-b) > (b-a) = b + resphi*(c-b)
|otherwise = b - resphi*(b-a)
where resphi = 2 - phi where phi = (1+ sqrt 5)/2
in x
--main
main = do
print x
print (g x)
where
x = goldenSS g a ((a+b)/2) b tau
where
a = 2
b = 3
tau = 0.001
каких-либо идеи?
Пожалуйста, избавиться от номера строк в вашем примере кода. – Jubobs
ok, удалены номера – otg6e
Есть много проблем с вашим кодом ... В частности, использование вами стражей внутри привязки 'let' довольно странно. Почему бы просто не использовать выражение 'if'-' then'-'else'? – Jubobs