= MLtonWeak

[source,sml]
----
signature MLTON_WEAK =
   sig
      type 'a t

      val get: 'a t -> 'a option
      val new: 'a -> 'a t
   end
----

A weak pointer is a pointer to an object that is nulled if the object
becomes <<Reachability#,unreachable>> due to garbage collection.  The
weak pointer does not itself cause the object it points to be retained
by the garbage collector -- only other strong pointers can do that.
For objects that are not allocated in the heap, like integers, a weak
pointer will always be nulled.  So, if `w: int Weak.t`, then
`Weak.get w = NONE`.

* `type 'a t`
+
the type of weak pointers to objects of type `'a`

* `get w`
+
returns `NONE` if the object pointed to by `w` no longer exists.
Otherwise, returns `SOME` of the object pointed to by `w`.

* `new x`
+
returns a weak pointer to `x`.
