我知道这个问题听起来有点挑战,但是我发现这里没有任何与F sharp有关的内容。好的,因为在我之前的问题中我提到过我对F#的新手。感谢几位程序员和#39;帮助我解决我在上一个问题中的求和函数。所以,我有一个包含超过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
答案 0 :(得分:0)
感谢John Palmer发布的快速解决方案。固定代码是
let sum (values: double list) =
let rec sum values accum =
match values with
| [] -> accum
| head :: tail -> sum tail (accum + head/12.0)
sum values 0.0