proposals/p2138.md
Change terminology from "generics" and "templates" to "checked generics" and "template generics". Afterwards, "generics" will be an umbrella term that include templates.
The C++ community does "generic programming" using templates in C++, and so thinks of templates as a mechanism for implementing generics. In Carbon, templates and other generic features are more similar than they are different, so it is worthwhile to have an easy way to talk about things that apply to both.
Change terminology from "generics" and "templates" to "checked generics" and "template generics". Afterwards, "generics" will be an umbrella term that include templates.
Similarly, for parameters, use "checked generic parameter" and "template generic parameter", with the umbrella term "generic parameter" describing both kinds. The word "generic" can be omitted from these terms if it's clear from context, which will usually be the case for template parameters.
Some existing design docs give examples of the difference before and after this proposal:
Using the terminology expected by the community supports these goals:
Use "generic" for checked generics, "template" for template generics, and "template or generic" when we mean both.
Advantages:
Disadvantages:
Use "checked generic" for checked generics, "template" for template generics, and "generic" when we mean both.
Advantages:
Disadvantages:
Use "checked generic" for checked generics, "unchecked generic" for template generics, and "generic" when we mean both.
Advantages:
Disadvantages:
template keyword or pick new non-keyword
syntax for it, or have a mismatch between keywords and terminology.This was suggested in #1443.