我写了这段代码,它是关于两个字符串是否是另一个字符串:
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
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |