我有一个用列表理解写的函数。作为一种学习,我决定尝试使用map,zip,fold等将此功能转换为功能性应用程序。我很难转换这个特定的应用程序。
它正在做什么似乎是不合理的,但它是更大功能的一部分,我想让这件作品先行。
combination :: Int -> [a] -> [([a],[a])]
combination 0 xs = [([],xs)]
combination n (x:xs) = [ (x:ys,zs) | (ys,zs) <- combination (n-1) xs ]
答案 0 :(得分:2)
这只是一个map
:
combination :: Int -> [a] -> [([a],[a])]
combination 0 xs = [([],xs)]
combination n (x:xs) = map (\(ys, zs) -> (x:ys,zs)) (combination (n-1) xs)