練習問題 8.1
本文中でもふれたように、ref 型は以下のように定義された、1フィールドの書き換え可能なレコードです。
type ‘a ref = { mutable contents : ‘a };;
関数 ref、前置演算子 !、中置演算子 := の定義を、レコードに関連した操作で書きなさい。
解答
type 'a ref = {mutable contents : 'a};;
let ref x = { contents = x };;
let (!) x = x.contents;;
let (:=) x y = x.contents <- y;;
実行例
# let p = ref 5;;
val p : int ref = {contents = 5}
# p;;
- : int ref = {contents = 5}
# !p;;
- : int = 5
# p := 8;;
- : unit = ()
# !p;;
- : int = 8