如何解决此类型错误?

发布于 2024-12-11 04:37:16 字数 643 浏览 0 评论 0原文

我无法将以下程序加载到 GHCi:

minList :: Ord a => [a] -> a   
minList (x:[]) = x
minList (x:y:xs) = minList( min x y : xs)

bubList :: Ord a => [a] -> [a]
bubList [] = []
bubList ( x:y:[] ) = min x y : max x y 
bubList ( x:y:xs ) = minList(x:y:xs) : bubList(xs) 

当我编译它时,我收到以下错误消息:

   Couldn't match type `a' with `[a]'
  `a' is a rigid type variable bound by
      the type signature for bubList :: Ord a => [a] -> [a]
      at ex1.hs:11:1
In the second argument of `max', namely `y'
In the second argument of `(:)', namely `max x y'
In the expression: min x y : max x y

I fail to load the following program to GHCi:

minList :: Ord a => [a] -> a   
minList (x:[]) = x
minList (x:y:xs) = minList( min x y : xs)

bubList :: Ord a => [a] -> [a]
bubList [] = []
bubList ( x:y:[] ) = min x y : max x y 
bubList ( x:y:xs ) = minList(x:y:xs) : bubList(xs) 

When I compile it I get the following error message:

   Couldn't match type `a' with `[a]'
  `a' is a rigid type variable bound by
      the type signature for bubList :: Ord a => [a] -> [a]
      at ex1.hs:11:1
In the second argument of `max', namely `y'
In the second argument of `(:)', namely `max x y'
In the expression: min x y : max x y

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

牛↙奶布丁 2024-12-18 04:37:16

max x y 将返回一个值 (a),而不是列表 ([a])。您只能将 cons (:) 放入列表中。你需要写:

(min x y : [max x y]) 

max x y will return a value (a), not a list ([a]). You can only cons (:) into a list. You are going to need to write, instead:

(min x y : [max x y]) 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文