Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting haskell中元组数组的索引排序_Sorting_Haskell - Fatal编程技术网

Sorting haskell中元组数组的索引排序

Sorting haskell中元组数组的索引排序,sorting,haskell,Sorting,Haskell,我编写了一个代码来对元组列表的索引进行排序,我试图使用bubblesort() 要避免使用循环 bubblesort::(Ord t) => [t]->[t] bubblesort[x,y,z,xs]= if x<y then x : map bubblesort [y,z,xs] else y : map bubblesort [x,z,xs] bubblesort::(O

我编写了一个代码来对元组列表的索引进行排序,我试图使用
bubblesort()
要避免使用循环

     bubblesort::(Ord t) => [t]->[t]
     bubblesort[x,y,z,xs]=
                if x<y then x : map bubblesort [y,z,xs]
                       else y : map bubblesort [x,z,xs]  
bubblesort::(Ord t)=>[t]->[t]
气泡排序[x,y,z,xs]=

如果x我不知道这个问题的完整解决方案,但是bubblesort期望
[t]
,但是
bubblesort[x,z,xs]
将是
[[t]->[t]]
的函数。因此,每次类型都会被另一个
[]


此外,您不需要执行
映射bubblesort
。试着准确地记住
map
函数的作用,看看为什么它没有意义。

Thanx alote etemalmat这是我为自己的问题而做的

  bubbleSort::(Ord t) => [t]->[t]
  bubbleSort[x,y,z,xs]=
                if x<y then x : [y,z,xs]
                       else y : [x,z,xs]
   superBubble::(Ord t) => [[t]]->[[t]]
   superBubble a=map bubbleSort a
bubbleSort::(Ord t)=>[t]->[t]
气泡排序[x,y,z,xs]=
如果x[[t]]->[[t]]
superBubble a=贴图气泡排序a

我的问题是将
map
与递归应用于所有元素的函数一起使用,因此我的解决方案是使它与一个元素一起工作,正如您在
bubbleSort()
中所看到的,现在它修复了您遇到的主要问题是初学者一直在解决的问题。您使用的是列表,因此您决定必须使用方括号。您真正需要的是:

bubblesort (x:y:xs) = 
    if x < y 
       then x : bubblesort (y:xs)
       else y : bubblesort (x:xs)
在一个正好有三个元素的列表上显式地进行模式匹配。如果你使用

foo (a:b:c:xs) = …
然后,在至少有三个元素的列表上显式匹配,其中第一个元素绑定到名称a,第二个元素绑定到名称b,第三个元素绑定到名称c,列表的其余部分(不管它有多长)称为xs


我希望这有助于澄清问题。这是一个非常常见的错误。

你到底想做什么?只是对一个列表进行排序,或者对一个元组进行排序?很高兴我能在不透露太多信息的情况下提供帮助:)我认为这根本不能解决真正的问题。请参阅下面我的评论,了解我认为解决问题的方法。这只适用于四元素列表,这可能不是您想要的,但它越来越近了。你可能想在IRC频道上询问这一点,这样你就可以与某人来回交流,让它一步一步地做你想做的事情。Freenode上的#haskell IRC频道。有关这方面的更多信息,请参阅(以及其他一些Haskell参考资料)。这确实解决了他的部分问题,但您还需要
bubblesort a:[]
bubblesort[]
@eternalmatt对,我不想为他们做所有的家庭作业=)
foo [a,b,c] = …
foo (a:b:c:xs) = …