「OCaml筆記」修訂間的差異

出自Tan Kian-ting的維基
跳至導覽 跳至搜尋
行 48: 行 48:
== n 維陣列==
== n 維陣列==
<code>Array.make [大小] [初始值]</code>
<code>Array.make [大小] [初始值]</code>
 
== for loop ==
<pre>for i = 0 to max do
...
done</pre>


== 得到某自定資料型別的某個 item ==
== 得到某自定資料型別的某個 item ==

於 2023年7月30日 (日) 14:20 的修訂

基本指令

  • 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 [大小] [初始值]

for loop

for i = 0 to max do
...
done

得到某自定資料型別的某個 item

參考