2017-08-03 106 views
0

例如,我想將下列文件動態加載到我的程序中並打印出結果。如何在OCaml程序中動態評估一段OCaml代碼?

input1.txt - >打印100

let x = 10 in x * x 

input2.txt - >打印3

let x = 1 and y = 2 in x + y 

input3.txt - >打印4

let ls = [1;2;3;4] in List.length ls 

ocaml_plugin可能對這個項目有用。我想知道如何實現它的更多細節。謝謝!

+0

你能解釋一下你爲什麼要這樣做嗎? – Drup

+0

我正在構建我自己的運行時圖計算器。基節點是一個OCaml表達式,例如,'a = let x = 100 in x * x'。節點可以是其他節點的公式,例如'b = a * a'。基節點可以採用任何自包含的OCaml表達式。基節點的輸入發生變化後,所有依賴它的節點都將被重新評估。 –

回答

2

OCaml參考手冊中的相關部分是dynlink library的一章(可以找到一個教程here)。 ocaml_plugin爲這個庫提供了一個包裝並自動編譯你的代碼。

否則,您必須對您的.ml文件編譯成.cmo文件與dynlink加載它們,無論是事前還是從程序調用編譯器(或者,喜歡冒險,直接通過compiler front-end)前。

在你的例子中,似乎有一個通用模式(即一個函數不帶參數並返回一個整數),並且可以定義一個接口。