Ich bin neu in F # und ich mache ein Programm, das erfordert, jede Unterliste bestimmter Länge einer Liste zu finden. Ich war mir nicht sicher, wie ich das anstellen sollte, also habe ich this question gelesen und beschlossen, die Antwort auf F # zu portieren. Hier ist, was ich habe:Wie man mit veränderbaren Listen in F # arbeitet?
let rec getSubLists (len : int) (list : List<int>) : List<List<int>> =
let result = new List<List<int>>()
let current = new List<int>()
let rec findSubLists (len : int) (superSet : List<int>) (current : List<int>) (soln : List<List<int>>) (idx : int) : unit =
if current.Length = len then soln.Insert(len - 1, current)
elif idx = superSet.Length then
let x = superSet.[idx]
current.Insert(len, x)
findSubLists len superSet current soln (idx + 1)
current.RemoveAt(x)
findSubLists len superSet current soln (idx + 1)
else()
findSubLists len list current result 0
result
Der Compiler ist verärgert über ein paar Dinge: es sagt, es gibt keinen Konstruktor für List<int>
, List<List<int>>
, und sie sagt, dass Insert
und RemoveAt
sind nicht definiert. Ich habe diese Methoden in der microsoft docs gefunden. This tutorial erwähnt RemoveAt
, aber es verwendet Add
anstelle von Insert
, die auch nicht funktioniert.