微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较 Haskell 中 2 个列表的长度

如何解决比较 Haskell 中 2 个列表的长度

我是 Haskell 的新手,目前正在做一些活动来测试自己。我创建这篇文章的主要原因是因为我陷入了一种我不太确定是否可以解决我所做的事情的情况。 我一直在尝试做的练习要求计算列表中有多少个重复的整数。好吧,我尝试通过递归来完成它,但我无法像那样解决它(主要是因为我对语言缺乏经验,而且我无法遵循 stackoverflow 中已有的教程)。

因此,我尝试使用 Set.fromList 复制我的列表并生成一个没有重复元素的副本,这样我只需比较两个列表的大小,就可以得到我的数量

>
import qualified Data.Set as Set

list :: [a] -> Int  
list xs = length xs
 
copyList = [1,2,4,4]

y =  Set.fromList copyLista




main::IO()

main = do

  print (list[1,3,3])

我实现了上面的代码,但不知道有没有办法让 y 接收传递给 list 的值。只能手动放置,就像上面的代码一样[1,4]

有人能给我一个关于如何进行的提示吗?

解决方法

首先,像您那样定义 list = length 没有任何意义。立即使用 length

但是,如果您真正想要这样做的是确定集合中有多少元素,那么有一个不同的功能。问 Hoogle 它叫什么:https://hoogle.haskell.org/?hoogle=Set a -> Int

啊哈,是Set.size。所以你可能想要的是

main = do
  print $ Set.size y

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。