I have detailed information on the latest developments in functional programming.

I think haskell is quite an advanced and high level programming language. With coq and agda this gets even more complex and advanced.

With "advanced" and "high level" I mean many distinct features, that can only be found in the respective languages.

Like for haskell

  • everything is pure and lazy per default
  • support for advanced concepts like GADTs, Monads, Functors, etc.

For coq / agda

  • a dependent type system

And both haskell and coq are used in academics, a good sign that they are 'state-of-the art'.

However I have no clue what comparable developments in object oriented programming are.

What are some of the latest developments in object oriented programming?

What would be a state-of-the-art OOP language counterpart to haskell / coq?

(I even search for advanced programming language on google, but I found mostly haskell related information. The only language I could think of is D 2.0. Scala is for me mainly a java compatible version of haskell.)

  • 1
    What are you trying to compare? Just saying "advanced and high level" is not enough detail.
    – Oded
    Commented Nov 6, 2011 at 10:25
  • 1
    "Scala is for me mainly a java compatible version of haskell.)" not at all. Haskell is a pure functional language. Scala mixes functional and object paradigms. Commented Nov 6, 2011 at 11:03
  • OOP might fit as a language extension and/or library in a pure functional language like Haskell, but each object would have to be manipulated in a monadic way - OOP objects are (normally, if not strictly always) stateful. It may not be an insane idea, though. After all, there are impure functional languages with OOP - Common Lisp has CLOS, Objective CAML and F# in the ML family, ... Not really what you asked, but my first thought in response anyway.
    – user8709
    Commented Nov 6, 2011 at 12:12
  • 2
    There isn't really a state-of-the-art OOP evolution I know of, so much as divergent multi-paradigm approaches. C# adds LINQ (borrowing heavily from functional programming) to OOP. Python also deserves a mention for mixing in functional (and other) ideas. The modern C++ standard library uses classes, but mostly as a building-block for a more template-oriented style of coding using lots of non-member template functions.
    – user8709
    Commented Nov 6, 2011 at 12:23
  • Why, C++x11, of course! Commented Nov 6, 2011 at 19:56

4 Answers 4


Subtyping (i.e., any static object-oriented type system) is so much more complex than any "flat" type system typical for the functional languages. It is nearly impossible to formalise it properly. For this reason, no surprise that we have not heard yet about, say, dependent object-oriented type systems.

Probably, a single early example of such an attempt would be this paper.

  • thanks for the link to the paper. I didn't even know the programming language Nemerle existed. Interesting that it supports type inference.
    – mrsteve
    Commented Nov 6, 2011 at 22:51
  • Can you expand on why subtyping is so complex? Commented Dec 28, 2014 at 14:59

I would say C# is probably a good language to loo at - it is a high level, general-purpose, managed, garbage-collected and object-oriented programming language.

The current version has generics, lambda expressions, built in parallelism constructs and more.

The next version is supposed to add asynchronous constructs.


The concept of a "state-of-the-art" language is hard to define. One can consider only the syntax, the toolchain (i.e c++ is not recent, but has powerful compilers), the framework (c# and java are popular because of it).

I don't know coq, but it does not look like it is a general purpose language. The specifity of Haskell is its purity. So my answer is: smalltalk, a pure oop language.


  • 2
    Looks like the question about the advanced type systems, and so, dynamically typed Smalltalk does not qualify.
    – SK-logic
    Commented Nov 6, 2011 at 11:32

I find it funny most people are answering you back with programming languages :-) In the world of OO, most advances in the "state-of-the-art" are published at OOPSLA and ECOOP conferences.

You have to understand that in terms of "formal proof" (as with Coq/Adga/etc...), there are fundamental problems yet to be solved in the OO formulation of programs. Subtyping (which SK-logic mentioned), overriding, etc, they are all far from being "tractable" in terms of providing suitable structures than can then be manipulated and reasoned upon. Even so, you can find projects such as ESC-Java or Spec# that are paving the road for that type of research.

In terms of "what's new" in this areas, there are several "trends" that you may find:

  1. DSL's and DSL construction
  2. Model-Driven OO systems
  3. Refactoring
  4. Increasing the strength of type-systems (see Scala)
  5. Incorporating functional aspects into OO (again, Scala and C#)
  6. Tackling the parallelism problems
  7. Meta-Programming and Reflection
  8. ...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.