VIDEOS:
* https://www.youtube.com/watch?v=kd8mlbN0Mws (Functional Conf 2017, best choice right now)
* https://www.youtube.com/watch?v=H_z4NKvxf1U (Curry On 2017, more detail than YOW! at the end, but slides out of sync for first 1.5min)
* https://www.youtube.com/watch?v=GaorHAlUkVs (YOW! Lambda Jam 2017, slightly shorter)
Paper with additional details: http://www.cse.unsw.edu.au/%7Echak/papers/CK17.html
Graphics, animation, and games programming in Haskell faces a dilemma. We can either use existing frameworks with their highly imperative APIs (such as OpenGL, Cocos2D, or SpriteKit) or we waste a lot of energy trying to re-engineer those rather complex systems from scratch. Or, maybe, we can escape the dilemma. Instead of a Haskell program directly manipulating the mutable object-graph of existing high-level frameworks, we provide an API for purely functional transformations of a Haskell data structure, together with an adaptation layer that transcribes those transformations into edits of the mutable object-graph.
I this talk, I will explain how I used this approach to architect a Haskell binding to the animation system and physics engine of Apple’s SpriteKit framework. I will discuss both how the binding is structured internally and how it achieves the translation of Haskell side changes to SpriteKit and vice versa, such that it is sufficiently efficient. Moreover, I will explain how to use the Haskell library to implement animations and games.
This talk is aimed at an intermediate level. It will use Haskell and SpriteKit as concrete technology in all examples, but it requires neither previous experience with Haskell nor with SpriteKit. In a similar vain, the talk is based on Apple’s SpriteKit framework, as there is no reasonable (in terms of effort) way around platform-specific technology if you want something that is simultaneously state-of-the-art, practically useful, and convenient to use. Nevertheless, the concepts explained in the talk transcend the specific technology and are generally applicable. Moreover, the entire code base of the Haskell binding is open source and available from https://github.com/mchakravarty/HaskellSpriteKit
Presented at
* YOW! Lambda Jam, Sydney, May 2017: http://lambdajam.yowconference.com.au/speakers/manuel-chakravarty-4/
* IFIP WG2.8, Edinburgh, June 2017
* Curry On, Barcelona, June 2017: http://www.curry-on.org/2017/sessions/haskell-spritekit-a-case-study-in-turning-a-stateful-into-a-purely-functional-api.html
* Functional Conf, Bangalore, November 2017: https://functionalconf.com/proposal.html?id=3939