Few Data Structures, Many OperationsBending the Language Toward the ProblemRethinking DispatchImproving Dispatch with GroovyClojure’s “Bendable” LanguageClojure Multimethods and a la carte PolymorphismOperator OverloadingGroovyScalaFunctional Data StructuresFunctional Error HandlingThe Either ClassParsing Roman numeralsLazy parsing and Functional JavaProviding defaultsWrapping exceptionsThe Option ClassEither Trees and Pattern MatchingScala pattern matchingEither treesPattern matching for tree traversal