6. F# と マルチプラットフォーム開発
Mono と .NET Framework
Windows 環境
iOS 環境
Android 環境
Linux 環境
Mono
Microsoft
.NET Framework
iOS Android Linux Windows
Windows
WinRT
Windows Phone
MonoTouch MonoDroid
7. F# と C# の組み合わせ
ひと通り、文法≒できること、は同じ
基本クラスライブラリ(Basic Class Library)
PCL(Portable Class Library)
C#/VB code F# code
Basic
Class Library
Portable
Class Library
9. yacc もどき
判別共用体の利用
ラムダ式をリストに保存
type Expr =
| ExprVal of Val
| ExprVar of Var
| ExprFunc of Func
| ExprOp of Expr*Op*Expr
| ExprB of LB*Expr*RB
let rec evalExpr = function
| ExprVal(n) -> evalVal n
| ExprVar(n) -> evalVar n
| ExprFunc(n) -> 0.0
| ExprOp(e1,op,e2) ->
let x = evalExpr e1
let y = evalExpr e2
match evalOp(op) with
| "+" -> x + y
| "-" -> x - y
| "*" -> x * y
| "/" -> x / y
| _ -> 0.0 // error
| ExprB (b1,ex,b2) -> evalExpr ex
10. UI は MVVMパターンで
type ViewModelBase() =
let propertyChangedEvent = new DelegateEvent<PropertyChangedEventHandler>()
interface INotifyPropertyChanged with
[<CLIEvent>]
member x.PropertyChanged = propertyChangedEvent.Publish
member x.OnPropertyChanged propertyName =
propertyChangedEvent.Trigger([| x; new PropertyChangedEventArgs(propertyName) |])
type MainViewModel() =
inherit ViewModelBase()
let mutable _Text1 = ""
member this.Text1
with get() = _Text1
and set(value) =
_Text1 <- value
base.OnPropertyChanged "Text1"
12. 参考リンク
Xamarin - Build mobile apps for iOS, Android, Mac and Windows
http://xamarin.com/
インサイド Xamarin Build Insider
http://www.buildinsider.net/mobile/insidexamarin
The F# Software Foundation
http://fsharp.org/
New York City F# User Group (New York, NY) – Meetup
http://www.meetup.com/nyc-fsharp/
1) Write cross-platform mobile apps with F# - NYC Mobile .NET Developers Group
(New York, NY) – Meetup
http://www.meetup.com/nycmobiledev/events/176767982/
【速報】F# + Xamarin.iOS + Xamarin Studio で iPhoneアプリを作れるよ |
http://www.moonmile.net/blog/archives/5825