12:20 AM
@ngn Cool. I can't join because I have an insufficient reputation, but I can answer that one pretty easily. CALL/CC is SET!
@nathanrogers Regarding game design, while you can use Canvas an the like, one issues with the current approach is that 3D graphics in the browser is currently really heavily dependent on making JS calls. You can create a directional "REPL" to send signals to the JS engine and have it do things that you want to do on the Canvas or 3D rendering fields, but that's a pretty heavy weight solution.
The value of that is that you can scale that to just about any 3D engine anywhere then, simply by writing the code that reads the sockets and runs the commands.
However, to my knowledge, there is no fully fleshed out, 3-D game engine written in APL. That's a long term fantasy of the Co-dfns project at some point in the future.
However, what you can do is access a portable 3-D game engine library or access a 3-D rendering technology that is cross platform and use that.
However, this will require some level of C understanding.
Working with perhaps a few stub functions and the like, you will be able, for instance, to write an OpenGL program in APL simply by making the appropriate calls to the appropriate OpenGL library on whatever platform you are using.
I believe someone may have already created OpenGL bindings for APL, but I'm not sure about that.
There are currently some copy overheads in using the []NA interface for doing high-performance FFI stuff, but that might not be too much of a problem depending on what you are doing.
Additionally, if the bulk of the complicated work is not in the rendering, but instead in the computation of various elements, which is the case for the StormWind simulator (where APL is used to do a lot of the data munching, but not the literal rendering), then you can probably get away with a heavier weight solution like the HTMLRender + 3D Canvas type solution.
The higher your performance requirements are for the specific calling structure between APL an whatever rendering technology you are using, the more work you'll need to put in to making things go.
Eventually I would love to have a 3-D game engine or the like written with Co-dfns so that you could write all of your game engine logic and most of the other stuff purely in APL and have zero overheads in using it together with an integrated game engine that renders to OpenGL or DirectX.
But that is frankly a long ways off from reality at the moment.