错误 - 输入中的语法错误(意外符号"大")

Chr*_*ssa 0 haskell

我写了这段代码,它是关于两个字符串是否是另一个字符串:

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  
Run Code Online (Sandbox Code Playgroud)

我在那里找到了quicksort的代码http://c2.com/cgi.com/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
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我在输入中采用错误语法错误(意外符号"大").

为什么我错了?

小智 5

如果我把它加载到ghci它运行完美.

也许你的缩进在where子句中是不正确的.

anagramwhere关键字必须缩进和在haskell中"不相等"是/= !=

到处使用空格.

它必须YourModule.break在这里,anagram所以它不会与之发生冲突Prelude.break.

只是阅读错误信息,电脑正试图和你说话,所以听;)

在GHCi中测试大量代码,您将更加熟悉Haskell