2015-04-01 62 views
0

我寫了這個代碼,它是關於兩個字符串是另一個每個字謎:錯誤 - 在輸入語法錯誤(意外符號「大」)

anagram :: String->String->Bool    
anagram w1 w2 = anagram1 x1 x2 
where 
    y1 = break w1 
    y2 = break w2 
    x1 = quicksort y1 
    x2 = quicksort y2 


anagram1 :: [String]->[String]->Bool 
anagram1 (h1:t1)(h2:t2) 
    | h1!=h2 = False 
    | h1==h2 = anagram1 t1 t2 
    | otherwise = True 

我找到了快速排序有http://c2.com/cgi/wiki?QuickSortInHaskell

代碼
quicksort :: [String]->[String] 
quicksort [] = [] 
quicksort (h:t) = quicksort small ++ (h : quicksort(large)) 
    where 
     small = [y | y <- t, y <= h] 
     large = [y | y <- t, y > h] 


break :: String->[String] 
break s = map (\c -> [c]) s 

當我運行它,我採取錯誤輸入語法錯誤(意外符號「大」)

爲什麼我錯了?

+0

[無法重現]( http://coliru.stacked-crooked.com/a/97a4e24a70de478d)。你可能打破了你的縮進。 – 2015-04-01 10:16:55

回答

5

如果我將它加載到ghci中,它會完美運行。

也許你的縮進在where子句中是不正確的。

anagram WHERE關鍵字必須縮進和Haskell中「不等於」是/=!=

請使用空格到處

它必須是YourModule.breakanagram所以它不會與Prelude.break衝突。

剛剛看過的錯誤信息,計算機正試圖向你說話,所以聽;)

測試大量的代碼GHCI,你會得到更多的舒適與哈斯克爾