Introdução a type level programming em scala