Я знаю, что этот вопрос звучит немного сложно, но я не нахожу здесь ничего подобного, связанного с фа-диез. Хорошо, так как в моем предыдущем вопросе я упомянул, что новичок в F #. Спасибо нескольким коллегам-программистам, которые помогли мне решить мою функцию суммы в моем предыдущем вопросе. Итак, у меня есть текстовый файл, содержащий более 20 строк, и я хочу распечатать строки с годами и средними значениями общих элементов за каждый год и его элементы.
Образцы текстовых строк
2009 1.3 3.51 6.76 5.80 4.48 5.47 2.06 4.3 0.54 7.69 1.27 2.9
2008 3.53 3.71 1.88 2.46 4.63 4.88 4.53 1.51 10.83 2.7 1.28 6.51
2007 2.88 2.19 3.55 3.95 2 3.1 4.18 8.76 1.91 2.01 1.67 3.54
2006 3.48 1.33 3.16 3.87 3.19 3.87 4.24 7.12 4.32 6.63 2.97 3.37
2005 5.32 2.41 1.76 1.63 1.78 1.07 2.07 1.44 2.68 1.14 2.15 1.38
2004 1.09 0.75 3.93 1.9 5.57 2.94 4.46 5.01 0.86 2.42 5.02 1.75
....
Теперь у меня есть пара функций, которые я хочу вам показать. К сожалению, моя функция печати выводит только первую строку.
let rec print year values =
if values = [] then
()
else
printfn ""
printfn "%A: %A" year values
и вторая функция, которая отлично справляется с суммой элементов, но я не могу заставить ее правильно разделить ее на 12 элементов.
let sum (values: double list) =
let rec sum values accum =
match values with
| [] -> accum
| head :: tail -> sum tail (accum + head) / 12.0 // would 12.0 work right?
sum values 0.0
в основном
let (year, values) = ParseLine file.Head
printfn "%A: %A" print (year (sum values)) // year gets the error, according to visual studio
sum tail (accum + head/12.0)
. Или вы могли бы просто сделать[] -> accum/12.0
- person John Palmer   schedule 13.02.2015