Fundamentos
O que vem depois dos primeiros passos: tipos, coleções, padrões, ações de ordem superior, recursão e o sistema de tipos — o mapa da seção.
Os primeiros passos ensinam a escrever um programa. Os fundamentos ensinam a escrever o programa certo: qual coleção escolher, quando um valor pode mudar, o que is compara, onde mora a ausência, como uma ação recebe outra.
Não há ordem obrigatória. Cada página se sustenta sozinha, e todo bloco de código roda — foi conferido executando.
A linguagem por dentro#
Anotações de tipo
Tipos opcionais em variáveis, parâmetros e retorno — verificados em execução e por análise estática.
Records
Dados imutáveis com igualdade estrutural, valores padrão, métodos e o operador with.
Enums
Conjuntos fechados de valores nomeados, com valores associados e integração com match.
Pattern matching
match estrutural: literais, tipos, sequências, records, vaults, enums, alternativas e guardas.
Desestruturação
Extrair vários valores de uma vez, por posição ou por nome.
Spread e rest
O operador ... expandindo coleções e coletando o que sobra.
Compreensões
Construir listas e vaults numa expressão, transformando e filtrando.
Interpolação
Strings com $ que embutem expressões, e como formatar saída legível.
Generators
stream action e emit: sequências produzidas sob demanda, inclusive infinitas.
Closures e lambdas
Ações como valores: alta ordem, closures, lambdas e composição.
Decoradores
mark @nome — envolver uma ação sem alterar seu corpo.
Decoradores avançados
Embrulhar e anotar — e o que os metadados permitem construir.
Traits
Contratos de interface compostos com with.
Generics
Uma estrutura que serve para qualquer tipo.
Escopo
Como os nomes são resolvidos, e o que shadow faz.
Módulos
adopt, relay, imports seletivos e detecção de ciclos.
Valores, coleções e ações#
Conjuntos, números exatos, ausência, conversões, igualdade, imutabilidade, texto, ordem superior e recursão — com as armadilhas que cada um esconde.
Conjuntos
O tipo Set: o literal {1, 2}, set(xs), a compreensão, as operações — e por que um Cluster não entra nele.
Números
Integer, Float e Decimal — a divisão, o arredondamento, e o 0,1 + 0,2.
Verdade e ausência
void, o que é verdadeiro, ?? e ?. — e por que 'não sei' não é zero.
Conversões
int, float, str, cast e typeof — e o que acontece quando o valor não converte.
Igualdade e comparação
is compara pelo valor, por estrutura — e as três formas de comparar coleções e objetos.
Imutabilidade
steady, record, freeze e tupla — o que muda, o que não muda, e por que isso importa.
Texto a fundo
Fatiar, procurar, trocar, dividir, juntar e formatar — e o texto de várias linhas.
Ações como valores
Passar uma ação para outra, devolver uma ação, lambda — e o pipeline como a forma idiomática.
Recursão
Uma ação que chama a si mesma, o caso base, o teto de mil quadros — e as duas saídas.
O sistema de tipos#
Sistema de tipos: visão geral
O mapa: tipos internos, anotações, coleções tipadas, tipos nomeados, generics, indexados, opacos e traits — e o que cada camada garante.
Tipos nomeados
type e opaque type: alias, união, interseção, refinamento e tipo opaco — o que cada um promete, quem confere e quando o analisador cala.
Tuplas
(1, \
Resultado e Talvez
A falha como valor: ok/falha com mapear, entao e recuperar; e Talvez para onde void é ambíguo — as três formas de lidar com o que dá errado.
Reflexão de tipos
Arcane.Tipos: os metadados de um type declarado, conferir sem levantar, a forma estrutural de um valor e os campos de um record com o tipo de cada um.
Fundamentos e tipos: o mapa
Item por item das partes 1 e 2 da referência Deep Tech, cruzado com o DataForge: o que existe e onde está, o que tem outro nome, e o que não existe por decisão.
Generics: o sistema de tipos
<T> e <T extends X> em ação, blueprint, record, enum e trait: o que o parâmetro documenta, o que o limite cobra, e onde o argumento chega ao conteúdo.
Sistema de traits
Traits com implementação padrão, herança entre traits, tipos e constantes associados, interseção, despacho dinâmico e o que a linguagem cobra de quem implementa.