Ref的设计方式和目的

请问一下Ref的设计目的是?从代码结构看就是一个结构体,这个引用方式的目的是啥呢?经过测试貌似只要是结构体的话,就是引用传递方式,设计这个Ref结构的目的只是为了来针对简单类型(bool,Int等)作为引用的目的,还是说有什么特殊的意义呢?

Ref用作可变引用,有的场景下并不想声明一个带mutable field的struct类型:

let debug : Ref[Bool] = @ref.new(false)
let table : Ref[Point] = @ref.new({ x: 10, y: 100 }) 

我的理解是这个设计来自 OCaml 的 ref,OCaml 里面有:

val ref: 'a -> 'a ref
val (!): 'a ref -> 'a
val (:=): 'a ref -> 'a -> unit

本质上是 type a' ref = {mutable content: 'a} ,就是有一个元素的可变结构体的糖。由于 OCaml 里没有 let mut 这种,所以要么用结构体要么用 ref(最终也是结构体)来实现可变。moonbit 有 let mut,所以 ref 就看起来似乎没必要,但是这就是一层薄薄的糖而已