如何将列表展开到具有良品率的列表列表中?

Ser*_*hov 0 f#

另一个不切实际的练习...我有一个函数将列表展开为从每个列表元素开始的列表序列:

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

产量

  seq [[1; 2; 3]; [2; 3]; [3]]
Run Code Online (Sandbox Code Playgroud)

我尝试用seq/yield写同样的东西,但是失败了......这可能吗?还有其他很好的方法来编写这个函数吗?

Dan*_*iel 5

let rec seqOfLists lst =
    seq {
        match lst with
        | _::xs -> 
            yield lst
            yield! seqOfLists xs
        | [] -> ()
    }
Run Code Online (Sandbox Code Playgroud)