Poderíamos simplesmente ir somando o total
... se não tivéssemos várias máquinas processando.
Poderíamos mandar todos os dados para um banco de dados e ir marcando os registros como processados
... se isso não significasse que o banco cresceria infinitamente.
... a não ser que registros antigos fosse apagados.
... que é o que serviços de mensageria fazem.
sudo cat /etc/shadow | cut -d ':' -f 2 | sort | uniq -c
Batch processing seria o caso de processar os dados de um dia.
Se novos dados entrassem no total do dia, bastaria reprocessar os dados do dia.
ou do mês, ou do ano.
Uma função é considerada pura se ela sempre retorna o mesmo resultado para os mesmos parâmetros.
def mult(a):
return a * 4
mult(2)
8
mult(2)
8
class LightSwitch:
def __init__(self):
self.state = False
def switch(self):
self.state = not self.state
print(self.state)
light = LightSwitch()
light.switch()
True
light.switch()
False
print()
INSERT INTO table (value, value)
Uma vez que o dado é gerado, ele nunca muda.
(Transparência referencial)
map()
reduce()
fold()
(map lambda iterator)
(reduce lambda iterator)
(fold lambda iterator start)
map
: transforma cada um dos
elementos do iterador através do função lambda
em uma nova lista.reduce
: remove elementos do
iterador que não sejam verdadeiros pelo lambda
e produz uma nova lista. fold
: converte todos os elementos
da lista em um único valor, começando com um
valor adicionar (por exemplo, sum
).