a little rusty from my Scheme days, I’d like to take 2 lists: one of numbers and one of strings, and fold them together into a single string where each pair is written like “{(ushort)5, “bla bla bla”},\n”. I have most of it, i’m just not sure how to write the Fold properly:
let splitter = [|","|]
let indexes =
indexStr.Split(splitter, System.StringSplitOptions.None) |> Seq.toList
let values =
valueStr.Split(splitter, System.StringSplitOptions.None) |> Seq.toList
let pairs = List.zip indexes values
printfn "%A" pairs
let result = pairs |> Seq.fold
(fun acc a -> String.Format("{0}, \{(ushort){1}, \"{2}\"\}\n",
acc, (List.nth a 0), (List.nth a 1)))
Your missing two things. The initial state of the fold which is an empty string and you can’t use list comprehension on tuples in F#.
fold2 version
If you are concerned with speed you may want to use string builder since it doesn’t create a new string every time you append.