【问题标题】:How to unfold a list into list of lists with yield?如何将列表展开为具有产量的列表列表?
【发布时间】:2014-04-04 01:10:40
【问题描述】:

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

[ 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 写同样的东西,但失败了……这可能吗?还有其他写这个函数的好方法吗?

【问题讨论】:

    标签: f#


    【解决方案1】:
    let rec seqOfLists lst =
        seq {
            match lst with
            | _::xs -> 
                yield lst
                yield! seqOfLists xs
            | [] -> ()
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 2020-10-28
      • 2019-03-22
      • 1970-01-01
      • 2013-11-06
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多