lib*_*bra 1 merge haskell split
我试图编写一个代码来排序整数列表,但是我从终端收到一条错误消息,代码和错误如下所示:
-- sort
type Element = Int
merge_sort :: [Element] -> [Element]
merge_sort list = case list of
[] -> []
[x] -> [x]
_ -> merge (merge_sort(list_left)) (merge_sort(list_right))
where (list_left, list_right) = split list
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[1 of 1] Compiling Main ( recursion test.hs, interpreted )
recursion test.hs:7:9: Not in scope: `merge'
recursion test.hs:8:42: Not in scope: `split'
Failed, modules loaded: none.
Prelude>
Run Code Online (Sandbox Code Playgroud)
谁喜欢告诉我我的代码有什么问题?谢谢
我只想在答案中加上一些评论,以便将这个问题标记为已回答.
merge 在Prelude中没有定义但你可以得到它
import Data.List.Utils (merge)
Run Code Online (Sandbox Code Playgroud)
split 没有定义,但不要害怕:
split ls = splitAt (length ls `div` 2) ls
Run Code Online (Sandbox Code Playgroud)
这需要你
import Data.List
Run Code Online (Sandbox Code Playgroud)
Haskell在其标准库中具有许多这些功能.它们不是"内置"*但可以使用.如果你想找到一个,我会使用hoogle.
**现在大多数语言都是这样的,Haskell在这里并不是唯一的.