Sintaxe
Aspectos essenciais
Importações (<-)
console <- fat.console
Valores (v)
Os nomes dos valores começam com letra minúscula:
name = 'Mary'
age = 25
valores são constantes, salvo que declarados inicialmente com til
Variáveis (~)
~ email = 'my@email.com'
~ isOnline = true
Listas ([])
list = [ 1, 2, 3 ]
list(0) # Retorna 1, somente leitura
list[0] # Retorna 1, leitura/escrita, caso list possa ser alterada
Escopos ({})
scope = { key1 = 'value1', key2 = 'value2' }
scope.key1 # Retorna 'value1' (acesso por ponto)
scope('key1') # Retorna 'value1', somente leitura (acesso por chamada)
scope['key1'] # Outputs 'value1', leitura/escrita, caso valor possa ser alterado
Tipos (T)
Os nomes dos tipos começam com letra maiúscula:
Person = (name: Text, age: Number)
mary = Person('Mary', 25)
Métodos (->)
greeting = (name: Text): Text -> 'Olá, {name}'
console.log(greeting('Mundo'))
métodos também são considerados valores
Coalescência nula (??)
maybeValue ?? fallback # usa fallback se maybeValue for null/erro
If-Else ( ? : _)
condition ? then : else # se condition for verdadeira, faz "then", senão "else"
Match de casos (=>)
condition1 => result1
condition2 => result2
conditionN => resultN
_ => default # caso geral
Switch (>>)
value >> {
match1 => result1
match2 => result2
matchN => resultN
_ => default # caso geral
}
Tap (<<)
expression << tapMethod
usa tapMethod apenas pelos seus efeitos sobre valor retornado por expression
Loops (@)
condition @ loopBody # loop enquanto condition for verdadeira
1..10 @ n -> rangeMapper(n) # itera sobre o intervalo de 1 a 10
list @ item -> listMapper(item) # itera sobre os itens da lista
scope @ key -> scopeMapper(key) # itera sobre as chaves do escopo
Procedimentos (<>)
~ users = [
{ name = 'Foo', age = 30 }
{ name = 'Bar', age = 28 }
]
userNames = List <> users @ -> _.name
userNames # Retorna ['Foo', 'Bar']
Exploração detalhada
Nas próximas páginas, você encontrará informações sobre os aspectos centrais da escrita de código FatScript, usando tanto os recursos básicos da linguagem quanto os recursos avançados do sistema de tipos e bibliotecas padrão.
Formatação: como formatar código FatScript corretamente
Importações: como importar bibliotecas no seu código
Entradas: entendendo o conceito de entradas e escopos
Tipos: um guia para o sistema de tipos do FatScript
Controle de fluxo: controlando a execução do programa com condicionais
Loops: como usar intervalos, map-over e loops while