Simple fibonacci number calculator.
Usage: fib nth Fibonacci number
// --- examples --- // | |
// happy path | |
const Priority = Enum("Low", "Normal", "High"); | |
// ^? | |
type Priority = Enum<typeof Priority>; | |
// ^? | |
// invalid key starting with number | |
const InvalidPriority1 = Enum("1Low", "Normal", "High"); |
defmodule Primality do | |
# O jeito "ingênuo" de checar por primalidade é você simplesmente verificar | |
# se o número tem divisores. Ou seja, você pega todos os números menores | |
# que o seu número-alvo (começando em 2, pois 1 divide todos os números) | |
# e verifica se eles dividem o número (ou seja, se o resto da divisão - | |
# função `rem/1` - é igual a 0). | |
# | |
# Também precisamos de um caso especial para 1, que não tem divisores mas não | |
# é primo. | |
def check_naive(1), do: false |
<domain type='kvm'> | |
<name>win11-real</name> | |
<uuid>45768371-b871-4937-b7c2-60ed835011de</uuid> | |
<metadata> | |
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0"> | |
<libosinfo:os id="http://microsoft.com/win/10"/> | |
</libosinfo:libosinfo> | |
</metadata> | |
<memory unit='KiB'>33554432</memory> | |
<currentMemory unit='KiB'>33554432</currentMemory> |
Irei estar usando letras maiusculas para tipos e minusculas para o que não é um tipo ou é desconhecido.
Funções: (x : A) -> B
=== ∏x:A. B
, uma função que aceita x de um tipo A e retorna algo do tipo B, também chamado de abstração, a variável pode ser omitida quando ela não aparece em B A -> B
.
Implicito: {x : A} -> B
, uma função aonde o parametro é implicito, aka o compilador irá achar o argumento.
Módulo: (x : A, B)
=== Σx:A. B
, um módulo aonde a esquerda x tem um tipo A e a direita algo do tipo B, também chamado de par, módulos podem ser transparentes tendo a forma de (x : A = v, B
.
Aviso: Muitas vezes detalhes de várias operações podem variar de banco para banco. Em questões onde fiquei em dúvida, este documento segue o funcionamento do PostgreSQL, pois é o banco que conheço melhor.
Antes de começar a escrever SQL, você precisa entender o modelo de como um banco de dados relacional funciona. Não precisa se aprofundar muito, mas você precisa entender como que dados e relacionamentos entre eles são representados. (Nota importante: Relacionamento e relação não são a
type Reverse<A> = | |
`${A}` extends `${infer AH}${infer AT}` | |
? `${Reverse<AT>}${AH}` : A | |
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
type DigsNext<I = Digs, R = {}> = | |
I extends [infer Head, infer Next, ...infer Tail] | |
? DigsNext<[Next, ...Tail], R & Record<Head, Next>> | |
: { [K in keyof R]: R[K] } |
type Reverse<A> = | |
`${A}` extends `${infer AH}${infer AT}` | |
? `${Reverse<AT>}${AH}` : A | |
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
type DigsNext<I = Digs, R = {}> = | |
I extends [infer Head, infer Next, ...infer Tail] |
const verificaOrdenacao = (array) => | |
array.every((elem, indice) => indice === array.length - 1 || elem <= array[indice + 1]); | |
// O algoritmo usado aqui se chama Embaralhamento de Durstenfeld | |
const embaralha = (array) => { | |
for (let i = array.length - 1; i > 0; i--) { | |
const j = Math.floor(Math.random() * (i + 1)); | |
[array[i], array[j]] = [array[j], array[i]]; | |
} | |
} |
Why writing this, and why now? In January 2018 I started my journey as a maintainer of the React Native (RN) open source repo — it is the longest role I’ve ever kept going in my professional career, in a way — and I think now, at the 4 years mark, it is a very good time for me to pause, and force myself to think about how things have changed since then.
How did I become a maintainer? After a big burnout with react-navigation that led me to learn how to correctly interact with Open Source Software (OSS), I was starting to interact with OSS again by being a good citizen in the RN repository. Seeing me constantly in the issue section, trying to help out, led some Facebook (FB) engineers to decide to ask me to join the OSS repo with write access, so that I could be more proactive in helping its maintenance… and here we are.
Even so, I was never an em