15 lines
411 B
Forth
15 lines
411 B
Forth
let sma period f (list:float list) =
|
|
let sma_aux queue v =
|
|
let q = Seq.truncate period (v :: queue)
|
|
Seq.average q, Seq.toList q
|
|
List.fold (fun s v ->
|
|
let avg,state = sma_aux s v
|
|
f avg
|
|
state) [] list
|
|
|
|
printf "sma3: "
|
|
[ 1.;2.;3.;4.;5.;5.;4.;3.;2.;1.] |> sma 3 (printf "%.2f ")
|
|
printf "\nsma5: "
|
|
[ 1.;2.;3.;4.;5.;5.;4.;3.;2.;1.] |> sma 5 (printf "%.2f ")
|
|
printfn ""
|