Saltar para o conteúdo
Math Notes Documentação
Abrir o Math Notes

Escrevendo uma planilha

Uma planilha é uma lista de linhas avaliadas de cima para baixo. Cada linha pode definir um valor, referenciar algo acima dela, ou simplesmente produzir um resultado. As variáveis vivem em um único escopo por planilha e ficam disponíveis para toda linha abaixo da definição.

Comentários e rótulos#

Tudo depois de um # seguido de um espaço é um comentário e é ignorado.

2 + 2 # this is a note
retorna 4

Um rótulo: antes de uma expressão nomeia a linha sem ser avaliado. Isso ajuda a lembrar o que uma linha significa.

Price: 10 + 5
retorna 15

Um único # no início da linha também funciona como comentário.

// também inicia um comentário, como nas folhas do Numi e do Soulver. Uma linha é um cálculo: um ; entre duas instruções é um erro.

Tags#

Sem espaço depois do #, uma palavra é uma tag, não um comentário. As tags marcam linhas para que você possa somá-las em outro lugar.

20 #food
30 #food
#food
a última linha retorna 50

Uma linha que contém apenas tags mostra a soma delas, e sum/total/average/avg (opcionalmente of) faz o mesmo. São somadas as linhas de valor marcadas acima do pedido (atribuições marcadas como lunch = 12 #food não contam; escreva lunch: 12 #food).

Um operador depois de um pedido se aplica ao total dele.

10 #food
20 #food
sum #food * 2
retorna 60
20 #food
30 #food
#food * 2
a última linha retorna 100

Tags também podem ser usadas diretamente em cálculos: #food * 2, #food + #other. Pedir uma tag que não tem linhas marcadas é um erro.

Uma linha com várias tags é o valor total dividido igualmente entre elas. Então burger: 2 * 50 #ana #bob dá 50 para cada tag, enquanto a linha mantém os 100 completos.

burger: 2 * 50 #ana #bob
#ana
#bob
cada tag recebe 50

Variáveis#

Atribua um valor com = e reutilize-o em linhas seguintes.

pizzas = 2
pizzaPrice = 30
people = 4
(pizzas * pizzaPrice) / people
a última linha retorna 15

Nomes de variáveis podem conter espaços. Um nome de várias palavras deve ser consistente: monthly rent é um nome só, não monthly e rent.

monthly rent = 1500
monthly rent * 12
a última linha retorna 18,000

Se uma atribuição falhar (x = foo + 1), o nome continua sendo um erro até ser atribuído de novo, então as linhas seguintes que o usam mostram "x" has an error on line 2 em vez de usar em silêncio um valor antigo.

Você pode guardar uma função com f(x) = … e chamá-la depois, diretamente ou com outro nome.

double = f(x) = x * 2
double(21)
a última linha retorna 42
f(x) = x * 2
f(4)
a última linha retorna 8

Objetos#

Um objeto agrupa valores nomeados, e um ponto acessa um campo.

invoice = {subtotal: 120, tax: 12}
invoice.subtotal + invoice.tax
a última linha retorna 132

Referências#

line(n) usa o resultado da linha n. Apenas linhas acima podem ser referenciadas, e o valor aparece no lugar do token quando o cursor está em outra linha (o line(3) bruto reaparece enquanto você edita aquela linha).

5
line(1) * 2
a última linha retorna 10

prev se refere ao resultado mais recente acima dele. Ele ignora comentários e linhas em branco.

20
prev * 4
a última linha retorna 80
10
# a comment in between
prev + 1
a última linha retorna 11

Palavras reservadas#

Alguns nomes não podem ser usados como variáveis:

  • prev (o resultado anterior)
  • total (a agregação do total geral)
  • unit — abre a definição de uma unidade personalizada (unit widget = 3.5 kg)
  • as palavras de data incondicionais today, now, yesterday, tomorrow, christmas, halloween
  • qualquer nome que comece com __ (os auxiliares internos do editor)
  • end fecha um grupo

Fora isso, as variáveis compartilham um escopo com os nomes internos, então uma variável pode sombrear uma unidade ou função: depois de m = 5, 2 m é 2 × m, não dois metros. As restantes palavras-chave de agregação sum, average e avg ainda podem ser sombreadas: depois de avg = 5, uma linha avg posterior lê a variável em vez de agregar.

Linhas em branco#

Uma linha em branco encerra o bloco que sum, average e as outras agregações examinam, e separa seções da planilha. Use-a para manter as agregações restritas às linhas que você quer.