首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整数列表拆分为两个列表:一个是正数,另一个是负数- haskell。

将整数列表拆分为两个列表:一个是正数,另一个是负数- haskell。
EN

Stack Overflow用户
提问于 2014-06-21 16:51:53
回答 1查看 844关注 0票数 0

如何将整数列表拆分为两个列表:一个是正数,另一个是负数?

这是我的尝试:

有可能做到吗?

代码语言:javascript
复制
split:: [Int]->[[Int]]
split [] =[[]]
split xs =[x|x<-xs, x<0]:[y|y<-xs, x>=0]

我第二次尝试:

代码语言:javascript
复制
split:: [Int]->([Int],[Int])
split [] =([],[])
split xs = ([x|x<-xs,x<0],[y|y<-xs,y>=0])

不知怎么的,我还是没有得到正确的结果。

当我跑的时候

代码语言:javascript
复制
   split [1,2-2,3-4]

我得到了

代码语言:javascript
复制
   ([-1],[1,0])   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-21 16:54:42

您可以使用partition函数来完成这一任务:

代码语言:javascript
复制
import Data.List

split = partition (>=0)

你的尝试有一些问题。首先,您需要插入x:xs模式,否则它将被解析为(split x):xs,这不是您的意思。其次,它将产生一个类型错误,因为右边的:操作符应该被赋予一个元素作为它的左参数,而这些元素的列表作为它的右参数,但是您已经给它一个列表作为两个参数。最后,由于您只想返回两个列表,所以应该为返回类型使用一个元组,而不是嵌套列表。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24343787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档