Я только начинаю работать с F # и пытаюсь понять типичные иконы и эффективные способы мышления и работы.
Задача под рукой - простое преобразование файла с разделителями табуляции в раздел, разделенный запятой. Типичная строка ввода будет выглядеть так:
let line = "@ES# 01/31/2006 13:31:00 1303.00 1303.00 1302.00 1302.00 2514 0"
Я начал с кода цикла таким образом:
// inFile and outFile defined in preceding code not shown here
for line in File.ReadLines(inFile) do
let typicalArray = line.Split '\t'
let transformedLine = typicalArray |> String.concat ","
outFile.WriteLine(transformedLine)
Затем я заменил партию split/concat с одним Regex.Replace():
for line in File.ReadLines(inFile) do
let transformedLine = Regex.Replace(line, "\t",",")
outFile.WriteLine(transformedLine)
И теперь, наконец, заменили цикл на конвейер:
File.ReadLines(inFile)
|> Seq.map (fun x -> Regex.Replace(x, "\t", ","))
|> Seq.iter (fun y -> outFile.WriteLine(y))
// other housekeeping code below here not shown
Пока все версии работают, окончательная версия кажется мне самой интуитивной. Это, как более опытный программист F # выполнил бы эту задачу?