gpt4 book ai didi

Haskell - Ord a 类型是什么意思?

转载 作者:行者123 更新时间:2023-12-03 23:23:19 28 4
gpt4 key购买 nike

我正在 Haskell 中创建一个递归的合并排序函数。我被告知作为评估的一部分,我必须将类型定义为:

isort :: Ord a => [a] -> [a]

我假设该函数需要一个数组作为输入并输出一个数组。我知道 ord 是一个类。

在上面的上下文中 Ord a 是什么意思?

这是我的功能:
isort :: Ord a => [a] -> [a]
isort [x] = [x]
isort (x:xs) = insert x (isort xs)
where
insert :: Int -> [Int] -> [Int]
insert a [] = []
insert a (b:c) | a < b = a:b:c
| otherwise = b : insert a c

当我尝试将我的函数文件加载到 ghci 时,出现错误:
Couldn't match type ‘a’ with ‘Int’
‘a’ is a rigid type variable bound by
the type signature for isort :: Ord a => [a] -> [a]
at LabSheet2.hs:17:10
Expected type: [a]
Actual type: [Int]
...

最佳答案

Ord a 是一个类型类约束,表明您的函数适用于任何类型 a ,只要 a 是可比的( Ord erable )。您收到的错误消息是由于外部声明之间的冲突,表明它适用于任何 Ord a => a ,而内部 insert “仅”适用于 Int

关于Haskell - Ord a 类型是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34023614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com