如何合并和拆分不在范围内?(Haskell的)

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)

谁喜欢告诉我我的代码有什么问题?谢谢

Dan*_*zer 7

我只想在答案中加上一些评论,以便将这个问题标记为已回答.

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在这里并不是唯一的.