If your set of symbol is closed, you can use a variant type (sum type).
type symbols =
| A
| B
If you really need open symbols, you can use [polymorphic variants].
Let tag_a foo = (`A, foo)
However, you won't have convenience functions such as string_of_symbol; you would have to define them yourself.