我从http://www.ocaml-tutorial.org/data_types_and_matching获取了以下代码
我一直在尝试编写一个 C 存根,以便从我们的 PHP 代码库中调用。我不太明白我应该如何(以及是否)为以下 Ocaml 类型 expr 创建 typedef,以及如何从 C 存根访问函数 multiply_out?
我是 Ocaml 的新手,我们正在评估它,看看它是否对我们为我们的数学网络应用程序创建一个小语法有用。
type expr = Plus of expr * expr (* means a + b *)
| Minus of expr * expr (* means a - b *)
| Times of expr * expr (* means a * b *)
| Divide of expr * expr (* means a / b *)
| Value of string (* "x", "y", "n", etc. *)
;;
let rec multiply_out e =
match e with
Times (e1, Plus (e2, e3)) ->
Plus (Times (multiply_out e1, multiply_out e2),
Times (multiply_out e1, multiply_out e3))
| Times (Plus (e1, e2), e3) ->
Plus (Times (multiply_out e1, multiply_out e3),
Times (multiply_out e2, multiply_out e3))
| Plus (left, right) -> Plus (multiply_out left, multiply_out right)
| Minus (left, right) -> Minus (multiply_out left, multiply_out right)
| Times (left, right) -> Times (multiply_out left, multiply_out right)
| Divide (left, right) -> Divide (multiply_out left, multiply_out right)
| Value v -> Value v
;;
任何建议都会有很大帮助!谢谢!