, + , F # , + Powers. , ( let), F #, .
F #, static member - . , ( ). :
type Powers =
| P of double list
static member (+) (P ls, P rs) =
let rec AddReversed ls rs =
match ( ls, rs ) with
| ( l::ltail, r::rtail ) -> ( l + r ) :: AddReversed ltail rtail
| ([], _) -> rs
| (_, []) -> ls
P (( AddReversed ( ls |> List.rev ) ( rs |> List.rev) ) |> List.rev)
, Powers. , (P ls, P rs), . Evaluate :
let Evaluate (P ks) ( value:Complex ) =
ks |> List.fold (fun (acc:Complex) (k:double)->
acc * value + Complex.Create(k, 0.0) ) Complex.Zero
(P ks), .