Haskell on Android and iOS

We strongly believe that Haskell is one of the best choices for game and app programming. It’s declarative, it’s portable and it’s robust.

However, turning your Haskell code into an app that can be published on the App Store or Google Play for Android has always been painful. Over the years we’ve worked extremely hard to make this process smooth. Most of this has happened behind the scenes, and only two apps and a few papers have been published.

Today we’ve begun rolling out the tools that we use internally at Keera Studios to develop mobile apps and games. We’ve been using these tools on our development machines and on Travis CI, which compiles, packages and deploys our apps directly to online stores.

We take our customers and their projects very seriously. If we ask people to switch to Haskell, it can’t be just a bit better than other languages. In games, programming sometimes accounts for only 30% of the budget. The cost introduced by using new tools, a new setup, training people, etc. makes adoption hard.

We need to make Haskell much, much better. That is why we have worked extremely hard to make every step absolutely pain free, by creating compilation, packaging, distribution and testing tools, backends, libraries, and examples.

Our “vessels” to compile and deploy Haskell apps are called Andronaut and CuriOSity. As the names indicate, the former focuses on Android, and the latter on iOS. The same application can be packaged for both OSs, sharing the same Haskell code, as we have shown with Magic Cookies!. Both tools accept the same options. In the future, they’ll be just one.


Magic Cookies! is a 2D Haskell game that runs on iOS and Android, and can be purchased on iTunes and Google Play.

Installing the tool, creating a new app and compiling it is now trivial. Our system also publishes the package to online stores, or pushes it to a phone and runs it. After the first compilation, recompiling the game and pushing it takes just seconds.

Keera Andronaut is our vessel to compile, package and publish Android apps without effort. Together with its sister vessel, CuriOSity, you can write a Haskell app that works both on iOS and on Android.


This development setup is complemented by our testing & debugging tool, Haskell Titan, which records game interactions and allows us to reproduce traces. Haskell’s strong types and referential transparency, combined with architectures that separate IO from logic, makes game runs 100% reproducible, even across machines. Haskell Titan also works with QuickCheck, so we can see QuickCheck play our games and find bugs in them.

Our tools are accompanied by a series of templates, for iOS and Android, which explore game elements, UI, reactive programming and other OS features (social networks, payments, shared preferences, etc.).

We are first making our framework available to testers. The first testers are being contacted today. They are only given installation instructions: if anything’s not trivial, we are doing something wrong. We’ll work on their feedback and later make this available to everyone.

We are already working on more games and mobile apps. So, there is no need to wait if you’d like to work directly with us to develop a commercial Haskell app. We are also interested in collaborating with others on improving the ecosystem for Haskell mobile apps, including lower-level tools like GHC, c2hs, cabal, etc (our patches to existing tools will be sent back to those projects).¬†What we are trying to do is much, much bigger than us. The best way of helping Haskell and Haskellers get where we want to get is by working together towards a shared, long term vision. If your interest includes Haskell games, apps, Android or iOS, please get in touch.

With our framework, writing professional Haskell apps and games becomes a reality. In minutes one can have the complete toolchain and see the first app running on a phone or published on the online store. If you weren’t considering using Haskell yet, we hope you soon change your mind.

Happy Haskelling!

Leave a Reply

Your email address will not be published.