Phr*_*gyy 0 sorting haskell list
因此,在互联网上搜索了一段时间以获得一个很好的解决方案后,我已经到了路的尽头.
我目前面临着一些关于文本处理的Haskell问题,而且大部分问题一直都很顺利.但是,我现在坚持在列表中排序元组.
基本上,我有一个元组列表,所以有类似的东西
list = [("hey","there"),("there","hey"),("bears","are")]
Run Code Online (Sandbox Code Playgroud)
我现在的目标是在内部对元组进行排序,以便我收到
list = [("hey","there"),("hey","there"),("are","bears")]
Run Code Online (Sandbox Code Playgroud)
然后,我将运行一个group $ sort list以便能够检索有多少等效对的计数.换句话说,("hey,"there")相当于("there","hey").
到目前为止我尝试过的是使用地图功能.但是,似乎你不能使用map函数运行列表操作,但至少要尝试理解我的最终目标是什么,这是我到目前为止所取得的成就.
countup tuples =
let final =
sort sorted_internal where
sorted_internal = map (\x->(sort x)) tuples
in map (\x->(head x, length x)) final
Run Code Online (Sandbox Code Playgroud)
Mat*_*hid 10
该sort函数无法对元组的元素进行排序; 它只适用于列表.
你有两个选择.一种是编写一个用于排序(2元素)元组的函数:
sortTuple :: (Ord a) => (a,a) -> (a,a)
sortTuple (x,y) = (min x y, max x y)
map sortTuple tuples
Run Code Online (Sandbox Code Playgroud)
另一种是使用列表而不是元组:
map sort [["hey","there"], ["hey","there"], ["are","bears"]]
Run Code Online (Sandbox Code Playgroud)