picks
意外につかいでがありそうだね
code:haskell
picks ::
a
-> [(a,
a
)]
picks [] = []
picks (x:xs) = (x,xs) :
(y,x:ys) | (y,ys) <- picks xs
code:haskell
picks = para phi where
phi = \ case
Nil -> []
Cons x (xs,ys) -> (x,xs) : map (second (x:)) ys