BT

Your opinion matters! Please fill in the InfoQ Survey!

F# Native App Development on iOS and Android

| by Sergio De Simone Follow 5 Followers on Jul 25, 2014. Estimated reading time: 2 minutes |

F# has supported both iOS and Android native programming through Xamarin since at least Xamarin 4.8 and can be efficiently used to create native apps on both platforms. Let's give a look at some experience reports.

Rachel Reese, senior software engineer at Firefly Logic, recently gave a talk at the Nashville .NET User Group showing how to write fully native, cross-platform mobile apps entirely in F#. Rachel also provided an interesting feature comparison between F#'s and Apple's new Swift language. According to Rachel, while it is true that several F# features, such as discriminated unions, pattern matching, custom operators, optional type, and the REPL, can be found also in Swift, Apple's new language for iOS and OS X, the latter is still missing out on important F# features such as type providers, type inference, parallelism and async support at the language level, and more. She remarks that:

With each new release of Xamarin Studio, the mobile story gets even better for functional programming.

Faisal Waris, iOS and Android consultant, recently summarized his experience developing a complex app for Android using F#. Faisal's app has more that six thousands lines of code, with a complex UI including custom controls, and non-trivial background processing. He says:

Xamarin F# support is now very good and I will gladly recommend that for production use. When I started out, F# support was still in beta and I ran into many issues. However the Xamarin team was super responsive and have rapidly advanced the plug-in to where it is it now stable and very usable ... Instead of 6K, equivalent Java code would be in the 50K LOC range and of untenable complexity. I think F# is a great language for mobile computing.

Faisal is also the author of VL, a DSL in F# that allows to specify Auto Layout constraints on the layout of iOS controls. Thanks to VL, Auto Layout constraints are specified in strongly typed manner, which allows to catch some layout issues early on, says Faisal. VL makes use of F# Algebraic Data Types, pattern matching and operator overloading to offer a good example of the flexibility and expressiveness that F# can provide.

Neil Danson, software engineer, gave a nice introduction to developing apps for iOS with F# at a recent F#unctional Londoners Meetup. F# is fast, says Neil, since it compiles to native code, and it's complete, providing all the available APIs. Anyway, adds Neil, it is not as fast as Objective-C and F# apps have slower startup time. Neil also mentions that F# is particularly well suited to mobile app development thanks its async behaviour that allows to easily exploit non-blocking I/O and multicore CPUs, and portability across mobile platforms. On his BitBucket account, full implementations of two games for iOS and Android, Pacman and Pissed off owls, are available for download.

F# is a strongly typed functional-first language that uses type inference and additionally supports both the imperative and OO paradigm. F# is developed by the F# Software Foundation, which includes Microsoft and open contributors. An open source, cross-platform compiler for F# is available from the F# Software Foundation.

F# apps for iOS and Android can be developed by using either the Visual F# tools for Windows and F# Tools for Mac, or Xamarin Studio.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT