If viewing pointers as values, it's easy to understand this behavior, and I
believe it's correct. However most people don't understand it that way. Nim
only distinguishs between `ptr T` (immutable pointer) and `var ptr T` (mutable
pointer), but not `var ptr T` (mutable pointer to an object) and `var ptr var
T` (mutable pointer to a mutable object). Things like "pointer to an immutable
object" are missing. Also it's inconsistent with `seq` which can only be either
`var seq[T]` (appendable, movable, with mutable items) or `seq[T]`
(unappendable, immovable, with immutable items).