我很难理解函数式编程背后的逻辑。所以,这应该是一件非常简单但不适合我的事情。
我想做的是:
带参数列表的函数和列表如下所示:{"name":"something","id":"12sde"}Error occured while trying to proxy to: localhost:4200/api/v1/login
首先我应删除小于6的值,然后删除少于2个元素的所有列表。我的代码是这样的:
[[1,2,3], [5,7,8,12,34], [2,4,6,8]]
答案 0 :(得分:1)
你正好相反,检查一下:
SQLiteOpenHelper
答案 1 :(得分:1)
这是一个品味问题,但是,为了便于阅读,您可能想要使用中间体:
f11 :: [[Int]] -> [[Int]]
f11 xs =
let
less6Cleared = map (filter (\x -> x >= 6)) xs
in
filter (\x -> length(x) >= 2) less6Cleared
这表示less6Cleared
是清除了所有元素少于6的列表列表。现在,我们将过滤器应用于less6Cleared
。
答案 2 :(得分:1)
您还可以使用do
表示法,这要归功于列表' Monad
的实例。
f11 xss = do
xs <- xss
let ys = [x | x <- xs, x >= 6]
guard (length ys <= 2)
return ys
列表的 do
表示法基本上表示foreach
循环。我们从xs
中提取每个元素xss
,然后通过列表推导提供它,以过滤掉小于6的元素,命名结果ys
。然后guard
过滤掉ys
超过2的时间。
答案 3 :(得分:0)
如果你想用无点样式和部分功能应用程序疯狂......
f11 :: [[Int]] -> [[Int]]
f11 = (filter $ (>= 2) . length) . (map $ filter (>= 6))
......但它可能不会更清楚,特别是那些不习惯它的人。
我也满足了你的要求&#34;少于&#34;要严格,所以不删除6的值,不删除长度为2的列表。