Pizza is an extension of Java [JavaLanguage] with three important new features.
Parametric polymorphism. Although superficially similar to C++'s templates, this implementation is based on the HindleyMilner typing systems of ML [MlLanguage] and Haskell [HaskellLanguage].
First-class functions. Similar to the blocks of Smalltalk, functions and procedures may be passed as parameters, stored in variables and returned from methods.
Class cases and pattern matching. Pizza includes support for visitor-style patterns directly in the language, allowing much more expressive and readable code.