2016-08-24 2 views
3

Я создал новый файл quick.hs в каталоге ghci.exe. И содержаниеОшибка Haskell: ошибка синтаксического анализа на входе '='

quicksort::(Ord a)=>[a]->[a] 
quicksort []=[] 
quicksort (x:xs)= 
    let smaller = [a |a<-xs,a<=x] 
     larger = [a |a<-xs,a>x] 
    in quicksort smaller ++ [x] ++ quicksort larger 

Когда я выполняю : л быстрого в командной lline GHCI, выход

Prelude> :l quick 
[1 of 1] Compiling Main    (quick.hs, interpreted) 

quick.hs:5:17: error: 
    parse error on input ‘=’ 
    Perhaps you need a 'let' in a 'do' block? 
    e.g. 'let x = 5' instead of 'x = 5' 
Failed, modules loaded: none. 

Я concured такого рода проблемы во много раз. Что случилось на земле?

+5

[Без рекламы] (http://ideone.com/Zdflsx) Вы уверены, что в файле нет символов табуляции? –

+2

У меня все хорошо. Используйте '-Wall' и проверьте, не сообщает ли он вкладки в вашем коде вместо пробелов. (quick.sh вместо quick.hs выше - это просто опечатка в размещенном вопросе, верно?) – chi

+0

Я переписал код и убедился, что в нем нет вкладок. Но ошибка все еще там ... – Julian20151006

ответ

7

Вы говорите в комментариях, что вы уверены, что в исходном файле нет символов табуляции, но, проверяя источник вашего вопроса, действительно есть один перед маркером in. Замените это с соответствующим количеством пробелов, и все будет хорошо.

+0

Клянусь, я заменил все символы табуляции соответствующим количеством пробелов, но ошибка все еще там – Julian20151006

0

Вы должны удалить все вкладки и изменить их пробелами. Надеюсь, эта инструкция поможет вам.

Смежные вопросы