第一,這是我的代碼:我做區分OCaml中的功能和我有一些問題
module Problem1 = struct
type aexp =
| Const of int
| Var of string
| Power of string * int
| Times of aexp list
| Sum of aexp list
let diff : aexp * string -> aexp
= fun (exp, var) ->
match exp with
|Const a -> Const 0
|Var x -> if x = var then Const 1 else Var x
|Power (s, i) ->
if s = var then Times[Const i;Power (s, i - 1)] else Power (s, i)
|Times l ->
match l with
|h::t -> Sum[Times[diff (h, var);t];diff (t, var)]
|Sum m ->
match m with
|h::t -> Sum[diff(h, var); diff(t, var)];;
end
的解釋器說,
Error: This variant pattern is expected to have type aexp list
The constructor Sum does not belong to type list
但我想要的符號M是一個aexp列表。 找不到錯在哪裏。
順便說一句,這是你問在計算器的第五個問題,他們都沒有一個公認的答案,因爲人們爲你做一些努力,這是一種不禮貌的,你可以通過接受你找到合適的答案,至少感謝他們。 – Lhooq
哦,我在stackoverflow中很新手,我不知道如何接受答案。對不起...謝謝你的好意.. :)) –