11.11.08
Dojo 57 – Kata do Blocks
- Data: 10/11/2008, no IME – USP
- Participantes: Pedro, Thiago, Hugo, Jorge, R, Flores, Fabs, Mari, Marcelo, Bruno Gola, Renato, Carlos e Ricardo.
- Kata: Blocks por Mari
- Carta da Criatividade: Experimente uma idéia aleatória.
- Código: Estará disponível em breve.
Warm up
Um primeiro Parking Lot que apareceu foi sobre a numeração atual do Dojo, e acabamos por decidir que esse seria o Dojo 57. Após isso fizemos a escolha do problema. Inicialmente houveram quatro sugestões:
- Kata do Blocks
- Randori do Dama
- Randori do Entertainement
- Randori do Amigo Secreto: Um programa para sortear amigos secretos com um teste de aleatoriedade.
Fizemos a votação e o Kata ganhou. Perguntaram da onde vinha o problema Blocks, e a Mari nos disse que é o segundo mais fácil do UVA (só perdendo para o 3n+1). Após isso, sorteamos a carta da criatividade: “Experimente uma idéia aleatória”, que falava sobre um médico indígena e estratégias aleatórias de caças.
Coding Time
Inicialmente, a Mari criou o tipo de dados bloco e um construtor. Com os testes passando, foi feita uma refatoração para funcionar com um número arbitrário de blocos.
No Kata, a Mari começou a criar as operações, iniciando com a pile. Para essa operação, foi criada uma função para tirar um bloco do mundo. Depois criou uma função para devolver os blocos ao mundo recebendo o bloco que deveria voltar e sobre que bloco este deveria entrar, depois a implementou a Operação Pile Over. Infelizmente não terminamos o problema, mas por mais que pareça que fizemos pouco, o Hugo nos disse que para terminar tudo só precisaria implementar mais uma função e todo o resto seria simples de se implementar. Para cada implementação de função, estas ficaram meio grandes, mas se tornaram sucintas com uma boa refatoração, o que tornou o código mais fácil de entender.
A sintaxe de Haskell e os recursos funcionais nos deram a oportunidade de aprender coisas novas como o $, let, map, elem, span e outras coisas.
Retrospectiva
Dessa vez, as pessoas receberam os post-its e canetas no início do Dojo, para escreverem os pontos bons e ruins durante o Kata.
Como pontos positivos
, os principais temas abordados foram:
- Haskell e coisas relacionadas a essa linguagem;
- Boas explicações;
- BrHackDay ;
- Pessoas Novas ;
- Pensar Funcional ;
- Refatoração Power ;
E como pontos negativos
, podemos citar:
- Haskell e coisas relacionadas a essa linguagem ;
- Sem testes para o mundo ;
- Emacs ;
- Giant Step ;
- Repositório (foi movido para o Parking Lot) ;
- Conversa Paralela ;
- Monads (foi movido para o Parking Lot) ;
- Moedas do Fabrício;
E para o Parking Lot, os principais temas foram:
- Discussão do reposítório;
- Monads;
- Começar pelo in no let … in (isso é o Where na verdade);
- Remove recursivo;
- $ tem precedência mínima;
- Map, elem;
- \lambda;
- Set up para os testes;
- Stick to time?;
- Como construir Show e Eq complexos?;
O Dojo teve alguns momentos engraçados, como o Fabricio dar sua contribuição para a Pizza em moedas (gerando o ódio do Hugo), a explicação do Hugo de porquê o \lambda é representado por “\” (“é só tirar o pézinho”), mas a frase da noite foi dirigida ao Fabricio pelo R “Prum cara preguiçoso que nem você, Lazy Evaluation é ótimo”.