Skip to content

Instantly share code, notes, and snippets.

View Rastrian's full-sized avatar
Laughing into the abyss

Luis Vaz Rastrian

Laughing into the abyss
View GitHub Profile
@Rastrian
Rastrian / BLOG-POST.md
Last active September 16, 2025 16:18
Why Reliability Demands Functional Programming: ADTs, Safety, and Critical Infrastructure

Why Reliability Demands Functional Programming: ADTs, Safety, and Critical Infrastructure

In banking, telecom, and payments, reliability is not a nice to have. It is table stakes. The most reliable systems I have worked on reduce entire classes of bugs before the code even runs. Functional programming and Algebraic Data Types (ADTs) let you push correctness into the type system, so illegal states cannot be constructed in the first place.

What you will learn

  • How invalid states show up in real systems and why they cause costly incidents
  • How ADTs encode business rules so the compiler enforces them
  • How pattern matching and exhaustiveness checks turn refactors into safe edits
  • Practical modeling patterns for banking and telecom domains in TypeScript and OCaml
@Rastrian
Rastrian / introduction-fp-br.md
Last active August 9, 2024 14:47
Basic introduction for FP - EN/PT-BR (WIP - EN first)

Introdução Rápida à Programação Funcional (FP)

  • O que é e por que usar?

    Programação Funcional (FP) é um paradigma de programação que trata a computação como a avaliação de funções matemáticas, evitando a mudança de estado e dados mutáveis. Ela enfatiza a aplicação de funções a entradas para produzir saídas, sem modificar o estado. Na programação funcional, funções são tratadas como cidadãos de primeira classe, o que significa que podem ser atribuídas a variáveis, passadas como argumentos e retornadas de outras funções.

  • Características-chave da programação funcional incluem:

    • Estilo declarativo em vez de imperativo
    • Ênfase no que deve ser computado, ao invés de como deve ser computado
  • Evitar efeitos colaterais e mudanças de estado

@Rastrian
Rastrian / peano_fold.ml
Created October 8, 2022 21:55
OCaml Peano Fold
type nat = O | S of nat
let rec fold succ acc n =
match n with
| O -> acc
| S n' ->
let acc = succ acc in
fold succ acc n'
let add x y = fold (fun n -> S n) y x
import pandas as pd
a=pd.read_json('https://resultados.tse.jus.br/oficial/ele2022/544/dados-simplificados/br/br-c0001-e000544-r.json')
print('\n'.join([ f"{c['nm']:<20}\t{c['vap']}\t{c['pvap']}%" for c in a['cand']]))
local QuestsBlockHeroic = {}
local QuestNameCache = {}
function populateQuestsBlockHeroic(quest, zone)
if (QuestsBlockHeroic[zone] == nil) then
QuestsBlockHeroic[zone] = {}
end
if (QuestsBlockHeroic[zone] ~= nil) then
table.insert(QuestsBlockHeroic[zone], quest)
print("[QuestBlockHeroic] Quest "..quest.." added to zone "..GetAreaName(zone))
@Rastrian
Rastrian / teste.ahd
Created October 25, 2021 09:06
TODO: Change MOV, CMP and JNG unused by Ahmes simulator.
ORG 0
init:
LDA num_zero
STA result_more_sb ; MORE SB DIGIT (MMC)
STA result_less_sb ;LESS SB DIGIT (MMC)
STA mmc_more_sb ;MMC - TEMP MORE SB DIGIT
STA mmc_less_sb ;MMC - TEMP LESS SB DIGIT
ORG 128
declare:
op_A: DB 112 ; ADRESS>128
@Rastrian
Rastrian / FTM.md
Last active November 17, 2021 14:02
Comprando $FTM para utilizar os serviços da rede Fantom Opera

Esta publicação foi traduzida e adaptada para acessibilidade em PT/BR, a versão original e feita pelo @MarcoWorms em inglês, para visualiza-la clique aqui.

Comprando $FTM

  1. Se você nunca teve contato com crypto e não tenha criado uma conta em uma corretora, para comprar $FTM, recomendamos utilizar a Binance (Clique aqui para acessar o mesmo link sem o codigo de afiliado).
  2. Após criar uma conta em uma corretora, deposite dinheiro FIAT/moeda fiduciária da sua escolha na carteira da sua corretora.
  3. Uma vez que você depositou fundos você pode comprar $FTM diretamente de um mercado ou utilizar o conversor automático da Binance.

Instalando uma carteira via browser/navegador

data (++) :: [a] -> [a] -> Exp [a]
type instance Eval ((++) '[] bs) = bs
type instance Eval ((++) (a ': as') bs) = a ': Eval ((++) as' bs)
data Mappend :: a -> a -> Exp a
type instance Eval (Mappend '() '()) = '()
type instance Eval (Mappend (a :: Constraint) (b :: Constraint)) = (a, b)
type instance Eval (Mappend (a :: [k]) (b :: [k])) = Eval (a ++ b)
@Rastrian
Rastrian / Clube.java
Created June 13, 2020 13:08
Prova Modular - Questão Clube
import java.util.ArrayList;
import java.util.Date;
import java.util.Calendar;
import java.util.stream.Stream;
public class Clube {
private ArrayList<Membros> listaAcesso;
private static Calendar dataAcesso;
private static Calendar dataToday;
import java.util.Arrays;
import java.util.Comparator;
class Ordenador implements Comparator<Integer> {
public int compare(Integer o1, Integer o2){
return o2.compareTo(o1);
}
}
public class Shumlambs {