2,619
次編輯
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) |
||
行 27: | 行 27: | ||
* 重要的軟體使用之驗證 | * 重要的軟體使用之驗證 | ||
==== Ch1 | ==== Ch1 有型別的函數式程設 ==== | ||
(* | ===1.1介紹=== | ||
<pre>(* 我是註解 *) | |||
print_endline "string" (* 函數使用,一般寫法:print_endline("string")*) | |||
</pre> | |||
ocamlopt 可以編譯 | |||
<pre> | |||
# 2 + 2 ;; | |||
-: int = 4 | |||
(* 對結果做型別推導 *) | |||
let s = string_to_int 3.2 | |||
(* -> 這會型別錯誤 *) | |||
[[ | </pre> | ||
[[ | |||
; Type annotation(型別顯式標記) | |||
比較: | |||
<pre> | |||
let f x = x + 1 | |||
let f (x : int ) : int = x + 1 | |||
</pre> | |||
;型別 | |||
List.map 的型別:<code>('a -> 'b) -> 'a list -> 'b list</code> | |||
<code>let mapped_list = List.map (fun x -> 2 * x) a_list</code> | |||
; 可變變數(reference) | |||
<pre> | |||
let () = | |||
let r = ref 0 in (* 可變 reference *) | |||
for i = 0 to 9 do | |||
r := !r + 1 (* 刷新 r 值,使其 + 1) | |||
done | |||
</pre> | |||
另外還有 record、array、GADT、垃圾回收等等。 | |||
[[分類:資訊]] | |||
[[分類:邏輯學]] |