The use of pure functional languages for interactive applications, especially mobile applications and games, is still rare. Reasons for the infrequent use of pure functional programming in this area include the lack of libraries and frameworks that implement nec- essary features, the lack of support and integration with existing toolchains, and generally the lack of examples of large, non-trivial applications that demonstrate how to best structure interactive programs in a way that is easily scalable in terms of performance and modularity.
In this paper we identify three specific challenges that limit the application of functional programming specifically to mobile apps and games: purity, compositionality, and abstraction. We discuss so- lutions to these problems, and propose a framework for mobile app programming that completely separates logic from IO, resulting in an application architecture that is highly modular, referentially transparent, naturally scalable, backend agnostic and trivial to test. We implement this proposal in SAGE (Simple Application and Game Engine), a collection of libraries that provide higher-level notions needed in commercial applications, like resource management, wid- gets, storing user preferences, audio playing, image rendering, and composable applications, among others. We have verified the suit- ability of this approach by using it to build, in Haskell, six mobile games for iOS and Android.
Fri 23 Aug
|13:30 - 14:00|
|14:00 - 14:30|
|14:30 - 15:00|
Joachim BreitnerDFINITY Foundation