OCaml筆記
於 2023年8月27日 (日) 01:19 由 Tankianting(討論 | 貢獻) 所做的修訂
基本指令
A ^ B
:連結A、B字串(字串相加)
在 repl 模式匯入其他程式碼
命令行
在命令行輸入 ocaml ,輸入
# use "another_mode.ml"
(注意引號也要輸入)
編譯時
另外如果要引用其他的程式碼,把所有程式碼放在目錄中,成爲:
Folder ├── a.ml └── b.ml
在 a.ml 內引用 b.ml 的內容:
_ = B.foo x
編譯時:
ocamlopt -c a.ml ocamlopt -c b.ml ocamlopt -o a a.cmx b.cmx
可變的模擬
原則上,OCaml的物件是不可變的,但是可以用參照(reference、引用)模擬。
如下範例:
# let x = ref [1;2];; (* 設定 x 是一個引用,指向 [1; 2]這個列表(list)。 *) val x : int list ref = {contents = [1; 2]} # !x (* 取得 x 引用的值(列表) *) - : int list = [1; 2] # x := 3::!x;; (* 將 x 指涉的列表前面加上元素 3,然後指定 := 到 x 這個 ref,更新參照指向 *) - : unit = () # !x;; (* 取得 x 的內容,可以發現已經更新。 *) - : int list = [3; 1; 2]
n 維陣列
Array.make [大小] [初始值]
警告:初始值他們指向的變數是同一個,也就是變動(若可)其中一個項目,其他項目也會跟著動。
不想這樣的話,請用 Array.init
for loop
for i = 0 to max do ... done