关于无限类型的类型错误
我正在尝试纠正一个简单的函数来使用选择排序对列表进行排序,我的代码如下:
fun slctsrt [] = []
| slctsrt (x::xs) = slctsrt2 (xs, x, []);
fun slctsrt2 ([], min, []) = min
| slctsrt2 ([], min, y::ys) = min :: slctsrt2 (ys, y, [])
| slctsrt2 (x::xs, min, ys) = if x<min then slctsrt2 (xs, x, min::ys)
else slctsrt2 (xs,min,x::ys);
...并且它返回以下错误:
"lctsrt.txt", line 7, characters 32-35:
! | slctsrt2 ([], min, y::ys) = min :: slctsrt2 (ys, y, [])
! ^^^
! Type clash: expression of type
! 'a list
! cannot have type
! 'a
! because of circularity
i'm trying to right a simple function to sort a list using a selection sort, Im code is below:
fun slctsrt [] = []
| slctsrt (x::xs) = slctsrt2 (xs, x, []);
fun slctsrt2 ([], min, []) = min
| slctsrt2 ([], min, y::ys) = min :: slctsrt2 (ys, y, [])
| slctsrt2 (x::xs, min, ys) = if x<min then slctsrt2 (xs, x, min::ys)
else slctsrt2 (xs,min,x::ys);
... and it returns the error below:
"lctsrt.txt", line 7, characters 32-35:
! | slctsrt2 ([], min, y::ys) = min :: slctsrt2 (ys, y, [])
! ^^^
! Type clash: expression of type
! 'a list
! cannot have type
! 'a
! because of circularity
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
函数 slctsrt2 应返回一个列表。但是,第一个子句:
返回“a”。
应该是:
The function slctsrt2 should return a list. However, the first clause :
returns a 'a.
It should be: