Combining ObjectOrientedProgramming and FunctionalProgramming.
ObjectFunctional languages can be classified by how they handle state and I/O:
- in "hybrid" ObjectFunctional languages, the core semantics is imperative, and support for FunctionalProgramming is added, but any function can potentially have SideEffects.
- in "pure" ObjectFunctional languages, the core semantics is functional (i.e. guarantees ReferentialTransparency), and imperative aspects of ObjectOrientedProgramming are supported using MonadicProgramming, UniquenessTypes, etc.
- not impossible: a "pure-hybrid" where procedures and functions are separate types and functions may not have SideEffects (DeeLanguage allows kind of this).
Hybrid ObjectFunctional languages:
- NiceLanguage
- PythonLanguage
- RubyLanguage
- CommonLisp
- DeeLanguage
- DylanLanguage
- GooLanguage
- NeedleLanguage
- ObjectiveCaml
- GroovyLanguage (maybe?)
- ScalaLanguage
- NemerleLanguage
- OzLanguage
- EeLanguage
- CeeSharpLanguage (esp. 3.0)
- CeePlusPlus with additions e.g. FunctoidsInCpp and the BoostLibraries.
Pure ObjectFunctional languages:
Patterns
It is possible to use some ObjectFunctionalPatterns for simple ObjectOrientedProgrammingLanguages.
LambdaTheUltimate has a related department: http://lambda-the-ultimate.org/taxonomy/node/or/12
Also see MultiParadigmProgrammingLanguage, EqualRightsForFunctionalObjects.
See also ObjectFunctionalDiscussion, ObjectFunctionalImplementation.
CategoryObjectFunctionalPatterns CategoryFunctionalProgramming CategoryMultiparadigm