Я думаю, что вы хотите List.fold2
. По какой-то причине модуль List
имеет член fold2
, а Seq
- нет. Тогда вы можете полностью отказаться от zip
.
Типы ваших именованных переменных и тип результата, на который вы надеетесь, неявны, поэтому сложно помочь, но если вы пытаетесь собрать список строк, вы можете рассмотреть что-то вроде
let result = pairs |> Seq.fold
(fun prev (l, r) ->
String.Format("{0}, \{(ushort){1}, \"{2}\"\}\n", prev, l, r)
"" pairs
Мой F # / Caml очень ржавый, поэтому у меня может быть неправильный порядок аргументов. Также обратите внимание, что ваше строение строки квадратично; в моем собственном коде я хотел бы пойти с чем-то еще по этим направлениям:
let strings =
List.fold2 (fun ss l r ->
String.format ("\{(ushort){0}, \"{1}\"\}\n", l, r) :: ss)
[] indexes values
let result = String.concat ", " strings
Это не будет стоить вам квадратичного времени, и за ним будет немного легче следить. Я проверил MSDN и считаю, что у меня есть правильный порядок аргументов на fold2
.
Имейте в виду, я знаю, что Caml не F #, и поэтому у меня могут быть неправильные детали или порядок аргументов.