Julian20151006
Julian20151006

Reputation: 321

Haskell error: parse error on input '='

I created a new quick.hs file in the ghci.exe directory. And the content is

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 

When I issue :l quick in the ghci command lline, the output is

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.

I have concured this kind of problems many times. What's wrong on earth?

Upvotes: 3

Views: 5921

Answers (2)

Cris
Cris

Reputation: 11

You have to remove all tabs and change it by spaces. I hope that this instruction helps you.

Upvotes: 1

amalloy
amalloy

Reputation: 92117

You say in the comments that you are sure there are no tab characters in the source file, but inspecting the source of your question, indeed there is one right before the in token. Replace that with the appropriate number of spaces and you'll be all good.

Upvotes: 8

Related Questions