We thought that phantom types would be an appropriate topic for our first real post because they are a good example of a powerful and useful feature of OCaml that is little used in practice. In this post, I’ll cover a fairly simple use of phantom types: enforcing a capability-style access-control policy. In particular, I’ll describe how you can create easy to use read-only handles to a mutable dat