[Haskell-cafe] CEF3 bindings and game dev in Haskell

Joachim Durchholz jo at durchholz.org
Fri Mar 10 12:54:05 UTC 2017

Am 10.03.2017 um 13:05 schrieb MarLinn:
> Simplifying massively, a browser engine seems to offer four things a GUI
> can use: A set of parsers, a complex model of the interface layout, a
> set of tools to render said model, and a system to get a stream of
> meaningful user events related to the model. There's more but let's
> pretend that's all that's needed. Let's further say you had implemented
> all the bindings and tools you're imagining. Would it be possible to
> replace one of the four parts with a pure Haskell solution without
> changing the others?

Not for the usual browser engines, not easily, and not very usefully 
either because of interdependencies.
I.e. any Haskell solution that replaced just one part would have its 
design massively constrained by having to server all the other parts.

I think Maksymilian is targetting the usual design: Use some Javascript 
to establish whatever GUI model you want to see implemented (vanilla 
HTML elements usually aren't good enough), use some more Javascript to 
establish a smooth communication mechanism between backend and frontend, 
and write a library on the backend side that drives the whole thing.
It's tremendously complicated, but it's well-isolated because the 
program sees only a socket interface through which it drives the GUI and 
receives events - which is pretty similar to any existing GUI toolkit 
where you have an outgoing interface (function calls) and a stream of 
incoming events.
I wouldn't have recommended doing such a thing a decade ago, but this 
approach has become pretty well-understood so you can expect to see 
solutions to any architectural decisions, though maybe a tad "too 
imperative" for the Haskellish mind so you may want to design the socket 
interface to make it easier to deal with on the Haskell side.

BTW on the Javascript side, you can do thinks in a pretty functional 
People may not be doing it because they do not have enough FPL 
experience, so there's enough interesting stuff to do on that side.

More information about the Haskell-Cafe mailing list