Haskell '无法将预期类型与实际类型相匹配'
Haskell 'Couldn't match expected type with actual type'
我一直在阅读七周内的七种语言这本书,并且正在使用 Haskell。
我正在为这个问题苦苦挣扎:
编写一个接受列表的排序和一个比较其两个参数的函数,然后 returns 一个排序列表。
我在网上搜索了帮助并找到了解决方案,但由于预期的实际类型错误,我什至无法找到 运行 的解决方案。
这是我一直在尝试的代码:
module Main where
import Data.List
sortList :: (Ord a) => (a -> a -> Ordering) -> [a] -> [a]
sortList comparator list = sortBy comparator list
错误如下:
*Main> sortList [5,4,2,7,8,1]
<interactive>:1:10:
Couldn't match expected type `a -> a -> Ordering'
with actual type `[t]'
In the first argument of `sortList', namely `[5, 4, 2, 7, ....]'
In the expression: sortList [5, 4, 2, 7, ....]
In an equation for `it': it = sortList [5, 4, 2, ....]
我的想法与尝试:
也许我调用函数有误?我是 Haskell 的新手。我也尝试做很多搜索。我所能得出的结论是,某些地方的类型不匹配。我想脚本的解释和指导对我很有帮助。
你调用的函数有误,你需要给它传递一个比较器函数。您只需将一个列表传递给函数。
你的函数签名说:
"sortList is a function that takes:"
- function (a -> a -> Ordering) that take two elements of type 'a' and returns an 'Ordering' [this is your comparator]
- List of items 'a' ([a]) that you are passing it
- Returns a list of items 'a' ([a])
试试这样称呼他们:
sortList compare [3,2,1]
更多信息请阅读此处:
https://hackage.haskell.org/package/base-4.8.2.0/docs/Data-Ord.html
这里:
http://zvon.org/other/haskell/Outputprelude/compare_f.html
我一直在阅读七周内的七种语言这本书,并且正在使用 Haskell。
我正在为这个问题苦苦挣扎:
编写一个接受列表的排序和一个比较其两个参数的函数,然后 returns 一个排序列表。
我在网上搜索了帮助并找到了解决方案,但由于预期的实际类型错误,我什至无法找到 运行 的解决方案。
这是我一直在尝试的代码:
module Main where
import Data.List
sortList :: (Ord a) => (a -> a -> Ordering) -> [a] -> [a]
sortList comparator list = sortBy comparator list
错误如下:
*Main> sortList [5,4,2,7,8,1]
<interactive>:1:10:
Couldn't match expected type `a -> a -> Ordering'
with actual type `[t]'
In the first argument of `sortList', namely `[5, 4, 2, 7, ....]'
In the expression: sortList [5, 4, 2, 7, ....]
In an equation for `it': it = sortList [5, 4, 2, ....]
我的想法与尝试:
也许我调用函数有误?我是 Haskell 的新手。我也尝试做很多搜索。我所能得出的结论是,某些地方的类型不匹配。我想脚本的解释和指导对我很有帮助。
你调用的函数有误,你需要给它传递一个比较器函数。您只需将一个列表传递给函数。
你的函数签名说:
"sortList is a function that takes:"
- function (a -> a -> Ordering) that take two elements of type 'a' and returns an 'Ordering' [this is your comparator]
- List of items 'a' ([a]) that you are passing it
- Returns a list of items 'a' ([a])
试试这样称呼他们:
sortList compare [3,2,1]
更多信息请阅读此处: https://hackage.haskell.org/package/base-4.8.2.0/docs/Data-Ord.html
这里: http://zvon.org/other/haskell/Outputprelude/compare_f.html