Aliases

Table of contents

TODO

This is a skeletal design, added to support the overview. It should not be treated as accepted by the core team; rather, it is a placeholder until we have more time to examine this detail. Please feel welcome to rewrite and update as appropriate.

Overview

Naming is one of the things that most often requires careful management over time – things tend to get renamed and moved around.

Carbon provides a fully general name aliasing facility to declare a new name as an alias for a value; everything is a value in Carbon. This is a fully general facility because everything is a value in Carbon, including types.

For example:

alias MyInt = Int;

This creates an alias called MyInt for whatever Int resolves to. Code textually after this can refer to MyInt, and it will transparently refer to Int.

Alternatives

The syntax here is not at all in a good state yet. We’ve considered a few alternatives, but they all end up being confusing in some way. We need to figure out a good and clean syntax that can be used here.