So a "sharp variable" is just a particular syntax to represent a reference? Is anyone else somewhat unimpressed by this? I mean, sure, it's kind of helpful for readability in the printout, and it's kind of nice to be able to one-line a recursive data structure. Just about any reasonably clear syntax will work for the former; there's no reason that the programmer would need to know about it before encountering it.
The latter is mostly useful in a lazy evaluation context; in other situations, you're only rarely creating recursive data structures in the first place (circular linked lists are the most obvious case).