2014-04-04 45 views
0

另一种不切实际的锻炼......我有展开列表到列表的开始,每个列表元素序列的功能:如何将列表展开为带有yield的列表列表?

[ 1; 2; 3 ] |> Seq.unfold (fun lst -> 
    match lst with 
    | x::xs -> Some(lst, xs) 
    | [] -> None 
) 

这将产生

seq [[1; 2; 3]; [2; 3]; [3]] 

我试着写与同seq/yield,但失败......这可能吗?任何其他不错的方法来写这个函数?

回答

5
let rec seqOfLists lst = 
    seq { 
     match lst with 
     | _::xs -> 
      yield lst 
      yield! seqOfLists xs 
     | [] ->() 
    } 
+0

美丽,谢谢! –

相关问题