Snap! is an educational visual programming language in the tradition of Scratch, but extended with features for abstraction,
such as higher-order functions and user-defined data types. The purpose of this thesis is to add a static type system with
type inference to Snap, in the style of Hindley-Milner type systems – the backbone of static typing in functional programming.
The main challenge of this thesis, beyond implementing the type system, is to design visual metaphors for static typing
that fit to the pedagogy of Snap and adapt the type Hindley-Milner system to the particular features offered by Snap!.