Question: I'd like to take an existing application (written in OCaml) and create an Emacs "interface" for it (like, for example, the Emacs GDB mode). I would prefer to do this without writing a ton of Lisp code. In MVC terms, I'd like for the View to be Emacs, but for the Model and Controller to remain (primarily) OCaml.

Does anybody know of a way to write Emacs extensions in a language other than Lisp? This could either take the form of bindings to the Emacs extension API in some other language (e.g., making OCaml a first-class Emacs extension language) or an Emacs interaction mode where, for example, the extension has a pipe into which it can write Emacs Lisp expressions and read out result values.

Answer: 
From the statically typed languages side, there is something that looks quite performant and well featured for Haskell:

<https://github.com/knupfer/haskell-emacs>

there is also probably something useful for Scala to be reused from the Ensime project (has a bridge for both Emacs and Vim):

<https://github.com/ensime/ensime-server>

Furthermore, a quick google search revealed another potential candidate for extending Emacs with a classic FP language, OCaml; the project has a lot of `.ml` source files so there's got to be an Emacs-OCaml bridge somewhere:

<https://github.com/the-lambda-church/merlin>
There is no "Extension API". Emacs Lisp is way in there, and it ain't moving.

You can run Emacs commands from your other process. Have a look at Gnuserv.

There are plenty of applications where Emacs is the View for a Model/Controller in a separate process. The Emacs GDB interface is a good example. I'm not sure of a simpler example, maybe sql-postgresql?