3
下面的代碼在「評估」失敗:
「這個表達,預計將有類型複雜,但這裏的類型爲雙榜」
我是不是打破關於運算符在「(+)」上加載的一些規則?
如果我將'(+)'更改爲'添加',情況還可以。F#操作過載:(+),爲用戶defind型
open Microsoft.FSharp.Math
/// real power series [kn; ...; k0] => kn*S^n + ... + k0*S^0
type Powers = double List
let (+) (ls:Powers) (rs:Powers) =
let rec AddReversed (ls:Powers) (rs:Powers) =
match (ls, rs) with
| (l::ltail, r::rtail) -> (l + r) :: AddReversed ltail rtail
| ([], _) -> rs
| (_, []) -> ls
(AddReversed (ls |> List.rev) (rs |> List.rev)) |> List.rev
let Evaluate (ks:Powers) (value:Complex) =
ks |> List.fold (fun (acc:Complex) (k:double)-> acc * value + Complex.Create(k, 0.0) ) Complex.Zero
不應該用'static member(+)...'讀取''? – 2012-05-01 11:29:01
'with'關鍵字是可選的。我更喜歡不使用它的簡單語法,但它可以在那裏。 – 2012-05-01 13:45:22