Разработка приложения на Android с помощью Xamarin и F#

imageПривет!

Недавно Xamarin объявил конкурс на разработку мобильного приложения на функциональном языке программирования F#.Это было связано с выходом Xamarin 3 с полной поддержкой F#. Я решил отвлечься от повседневных задач и попробовать поучаствовать, тем более что я давно смотрю на F#, но шансов познакомиться с ним подробнее у меня не было. Для участия в соревновании я решил разработать приложение идея которого была предложена кем-то в процессе обсуждения внезапного взлета мобильного приложения Yo. Вот цитата:

Идея для стартапа, рабочее название «ты где?».

Смысл прост, девушка устанавливает приложение, указывает в нем номер своего молодого человека и после этого появляется большая гнопка отправки сообщения «ты где?» #startup #idea

Почему бы и нет? ПримечаниеЯ писал этот пост параллельно работая над приложением. Поэтому он большой и местами не очень логичный.

Футболочка Первое что я сделал, это скачал и запустил приложение Xamarin Store чтобы получить футболку с F#. Такая же с C# у меня уже естьimage Вернее я попробовал, но сразу же схватил проблему с построением. Оказывается текущая версия Xamarin поддерживает F# версии 3.0, а свободно скачиваемой является только версия F# 3.1.1

F# 3.0 находится внутри пакета Visual Studio Express 2012 for Web и устанавливается вместе со студией с помощью Microsoft Web Platform Installer. Странный подход.Для работы Xamarin и F# достаточно чтобы сборка FSharp.Core версии 4.3.0.0 была в GAC. В любом случае, вот прямая ссылка если кто-нибудь захочет попробовать.

Начало работы Сейчас Xamarin поддерживает F# только внутри Xamarin Studio. Так что пришлось на время забыть о своей любимой VS2013 и поработать в этой, в целом довольно неплохой, среде. Создание нового приложения под Android заняло пару секунд и вот перед нами рабочее Hello-world приложение для Android на F#MainActivity.fs namespace Xakpc.WhereAreYou.Droid

open System

open Android.App open Android.Content open Android.OS open Android.Runtime open Android.Views open Android.Widget

[] type WhereAreYouActivity () = inherit Activity ()

let mutable count: int = 1

override this.OnCreate (bundle) =

base.OnCreate (bundle)

// Set our view from the «main» layout resource this.SetContentView (Resource_Layout.Main)

// Get our button from the layout resource, and attach an event to it let button = this.FindViewById