当前位置:  开发笔记 > 编程语言 > 正文

Haskell - Ord的意思是什么?

如何解决《Haskell-Ord的意思是什么?》经验,为你挑选了1个好方法。

我在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]
...

ryachza.. 7

Ord a是一个类型类约束,表明你的函数适用于任何类型a,只要a是可比较的(Ord可用的).你得到的错误信息是由于你的外部声明之间的冲突,它说它适用于任何人Ord a => a,而内部insert"只"适用于Int.



1> ryachza..:

Ord a是一个类型类约束,表明你的函数适用于任何类型a,只要a是可比较的(Ord可用的).你得到的错误信息是由于你的外部声明之间的冲突,它说它适用于任何人Ord a => a,而内部insert"只"适用于Int.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有