Glossário: por que esta palavra
O vocabulário inteiro, com a palavra que cada uma substitui — e o motivo de sete terem sido removidas.
A objeção mais comum à linguagem é o vocabulário: por que `given` e não `if`? A resposta honesta é que a escolha foi deliberada e tem custo — e que o projeto já removeu sete palavras reservadas por serem caras sem entregar nada.
O mapa#
| Onde você diria | Aqui | Nota |
|---|---|---|
= | := | = sozinho não existe — given x = 5 é erro de sintaxe, não um bug calado |
const | steady | |
print | out | aceita vários, separados por vírgula |
if/elif/else | given/orif/otherwise | o nome atribuído num ramo existe depois do bloco |
| ternário | a given cond otherwise b | a mesma ordem do if |
switch | match / point / when / default | when é a guarda |
for x in xs | cycle x in xs | o corpo tem escopo próprio, de propósito |
for i in range(1,6) | cycle i from 1 to 5 | inclusivo nos dois extremos |
while | persist | |
do..while | perform … persist | |
break / continue | halt / skip | atravessam monitor |
def / return | action / yield | yield encerra a ação |
| gerador | stream action / emit | separados de propósito |
class / new | blueprint / spawn | |
self / super | self / root | |
interface | trait | |
@dataclass(frozen=True) | record | imutável, igualdade estrutural |
import / export | adopt / relay | relay é real, não convenção |
try/catch/finally | monitor/handle/ensure | |
throw | trigger | levanta TriggerError, não RuntimeError |
true/false/null | yes/no/void | |
// (divisão inteira) | ~/ | aqui // é comentário |
filter/map/reduce | >> sift/morph/distill | sintaxe, não função |
As que mais pegam quem escreve em português#
Estas são palavras reservadas, e por isso não podem ser nomes de variável: no, in, is, to, from, as, step, point, default, frame, stream, emit, forge, record, enum, when. Já range, cluster e vault são funções, e continuam livres.
Por que sete foram removidas#
Toda palavra em KEYWORDS deixa de poder ser identificador. Antes de acrescentar uma, o projeto confere se o parser realmente a consome:
$ grep -c "TokenType.NOVA\b" dataforge/parser.py # precisa ser > 0Se for zero, ela só quebra código de usuário sem entregar nada. Foi o caso de sete — e o mesmo raciocínio recusou covariant e contravariant, que seriam palavras que não decidem nada: a conferência de variância já está certa sem declaração, e há teste registrando essa decisão.