从OCaml程序调用Mathematica

时间:2010-09-06 10:20:26

标签: ocaml wolfram-mathematica

我正在编写OCaml代码。在其中的一部分,我想检查两个算术表达式是否相等(如x + 2 + y == x + 2 * y-y + 2)。在mathematica中实现这一点很简单,所以我想要一些帮助来执行Mathematica并将结果返回到OCaml中。我的操作系统平台是Linux。

干杯, ž。

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

let channel_to_mathematica, channel_from_mathematica = open_process "mathematica"
in
Printf.fprintf channel_to_mathematica "Tell me if this is equal ...\n";
let answer_from_mathematica = Scanf.fscanf channel_from_mathematica ... 
in
...

Documentation of open_process here

Documentation of module Scanf here

答案 1 :(得分:3)

一个非常普遍的答案是编写一个命令行Mathematica脚本,它接受2个表达式(在命令行或stdin上)并输出它们是否相等。 然后在OCaml中,只需通过系统调用调用该程序。

至于编写这样的命令行Mathematica脚本,我推荐使用MASH(披露:我制作了MASH):   Call a Mathematica program from the command line, with command-line args, stdin, stdout, and stderr