gpt4 book ai didi

haskell - 删除列表列表中给定元素的出现

转载 作者:行者123 更新时间:2023-12-01 10:06:06 26 4
gpt4 key购买 nike

我有这个函数可以删除列表列表中给定元素的出现。

remove          :: Eq a => a -> [[a]] -> [[a]]
remove y [] = error "Can't remove an element from an empty list"
remove y xs = map (filter(/=y)) xs

我如何使用列表理解来做同样的事情

谢谢

最佳答案

对于 xs 中的每个 l,将 filter (/= xs) l 添加到结果列表中:

remove y xs = [filter (/= y) l | l <- xs]

或者,通过嵌套理解移除过滤器。对于 xss 中的每个 xsxs 中的每个 x,仅保留 x如果它与 y 不同:

remove y xss = [ [x| x <- xs, x /= y] | xs <- xss]

如果你只是练习也没关系,但是你的 map 版本要好得多:)

关于haskell - 删除列表列表中给定元素的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com