SlideShare une entreprise Scribd logo
1  sur  11
Developing mobile apps
with F#
Gustavo Guerra
F#unctional Londoners Meetup Group
Developing mobile apps with F#
• App Demos
• Why F#
• F# & Mobile Platforms
• Tips &Tricks
Learn OnThe Go
UKTrains
Demo
Why F#?
• Functional First
• Immutability by default
• Powerful functional abstractions (LINQ+++)
• StrongType System
• Friends don't let friends use null
• Option type
• Whole class hierarchies in handful of lines
• Discriminated unions
• Record types
Why F#?
• Powerful but Light Syntax
• Significant whitespace
• Everything is an expression
• Pattern matching
• Type Inference
• Almost feels like a dynamic language like python
• Easier to Understand
• Declarative feel
• Explicit compilation order
• Signature files
Why F#?
• REPL
• Testability
• More productive than compile-run cycle
• Similar to dynamic languages (Python, Ruby, etc…)
• All your types are belong to us
• Type Providers
Why F#?
• Very goodAsync support
• What’s in C# 4.5
• More composable
• Built-in cancellation!!!
• Started explicitly
• http://tomasp.net/blog/csharp-async-gotchas.aspx
Windows 8 /Windows Phone 8
• No support forWinRT /WinPRT in F#
• View has to be done in C#
• F# only available through Portable Class Library
• MVVM doesn’t work as well as inWPF
• Data binding works ok-ish
• Reflection doesn’t work on erased type providers
• ICustomTypeDescriptor & similars not accessible from F# PCL
• F# compilation toWinJS
• http://funscript.info/
• http://www.websharper.com
Windows Phone 7
• Almost everything can be done in F#
• Still need wrapper C# project
• FSharp.Core 4.0 (noType Providers)
• No PCL support
• Xamarin.iOS / Xamarin.Android
• Also allows view to be done in F#
• Type Providers currently don’t work, but this will probably improve
Tips &Tricks
• Create F# wrappers tuned for currying & partial application
• LazyAsync
• Interfaces to access view elements
• Data Binding
• Match functions
• Option type doesn’t behave like regular DUs
• override x.ToString() = sprintf "%A" x
Q & A
• SourceCode
• http://github.com/ovatsus/LearnOnTheGo
• http://github.com/ovatsus/UKTrains

Contenu connexe

En vedette (6)

Iima Work Culture
Iima Work CultureIima Work Culture
Iima Work Culture
 
Master Slide Deck 2015 with CAP information
Master Slide Deck 2015 with CAP informationMaster Slide Deck 2015 with CAP information
Master Slide Deck 2015 with CAP information
 
The Ant
The AntThe Ant
The Ant
 
Domain specific languages - progressive f sharp tutorials nyc 2012
Domain specific languages - progressive f sharp tutorials nyc 2012Domain specific languages - progressive f sharp tutorials nyc 2012
Domain specific languages - progressive f sharp tutorials nyc 2012
 
5 Best Practices For F# Development
5 Best Practices For F# Development5 Best Practices For F# Development
5 Best Practices For F# Development
 
HR and CSR Presentation Final 2015 update
HR and CSR Presentation Final 2015 updateHR and CSR Presentation Final 2015 update
HR and CSR Presentation Final 2015 update
 

Similaire à Developing mobile apps with f sharp

Similaire à Developing mobile apps with f sharp (20)

Break Free with Managed Functional Programming: An Introduction to F#
Break Free with Managed Functional Programming: An Introduction to F#Break Free with Managed Functional Programming: An Introduction to F#
Break Free with Managed Functional Programming: An Introduction to F#
 
Break Free with Managed Functional Programming: An Introduction to F#
Break Free with Managed Functional Programming: An Introduction to F#Break Free with Managed Functional Programming: An Introduction to F#
Break Free with Managed Functional Programming: An Introduction to F#
 
F# for startups v2
F# for startups v2F# for startups v2
F# for startups v2
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
 
FunScript: Why bother?
FunScript: Why bother?FunScript: Why bother?
FunScript: Why bother?
 
PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015PHP Frameworks Review - Mar 19 2015
PHP Frameworks Review - Mar 19 2015
 
Mathias Brandewinder, Software Engineer & Data Scientist, Clear Lines Consult...
Mathias Brandewinder, Software Engineer & Data Scientist, Clear Lines Consult...Mathias Brandewinder, Software Engineer & Data Scientist, Clear Lines Consult...
Mathias Brandewinder, Software Engineer & Data Scientist, Clear Lines Consult...
 
Portable Class Library Deep Dive
Portable Class Library Deep DivePortable Class Library Deep Dive
Portable Class Library Deep Dive
 
F# for startups
F# for startupsF# for startups
F# for startups
 
Building a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdfBuilding a Cross-Platform Mobile SDK in Rust.pdf
Building a Cross-Platform Mobile SDK in Rust.pdf
 
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
Cenário atual do PHP e Introdução ao Laravel no Devinvale 2014
 
Ohoh
OhohOhoh
Ohoh
 
Lecture1
Lecture1Lecture1
Lecture1
 
Rootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift ApplicationsRootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift Applications
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift ApplicationsHack in the Box GSEC 2016 - Reverse Engineering Swift Applications
Hack in the Box GSEC 2016 - Reverse Engineering Swift Applications
 
Web development post io2016
Web development post io2016Web development post io2016
Web development post io2016
 
PDF Forms
PDF FormsPDF Forms
PDF Forms
 
Madrid F# Meetup: Introduction to F#
Madrid F# Meetup: Introduction to F#Madrid F# Meetup: Introduction to F#
Madrid F# Meetup: Introduction to F#
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VM
 

Dernier

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Dernier (20)

Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 

Developing mobile apps with f sharp

  • 1. Developing mobile apps with F# Gustavo Guerra F#unctional Londoners Meetup Group
  • 2. Developing mobile apps with F# • App Demos • Why F# • F# & Mobile Platforms • Tips &Tricks
  • 4. Why F#? • Functional First • Immutability by default • Powerful functional abstractions (LINQ+++) • StrongType System • Friends don't let friends use null • Option type • Whole class hierarchies in handful of lines • Discriminated unions • Record types
  • 5. Why F#? • Powerful but Light Syntax • Significant whitespace • Everything is an expression • Pattern matching • Type Inference • Almost feels like a dynamic language like python • Easier to Understand • Declarative feel • Explicit compilation order • Signature files
  • 6. Why F#? • REPL • Testability • More productive than compile-run cycle • Similar to dynamic languages (Python, Ruby, etc…) • All your types are belong to us • Type Providers
  • 7. Why F#? • Very goodAsync support • What’s in C# 4.5 • More composable • Built-in cancellation!!! • Started explicitly • http://tomasp.net/blog/csharp-async-gotchas.aspx
  • 8. Windows 8 /Windows Phone 8 • No support forWinRT /WinPRT in F# • View has to be done in C# • F# only available through Portable Class Library • MVVM doesn’t work as well as inWPF • Data binding works ok-ish • Reflection doesn’t work on erased type providers • ICustomTypeDescriptor & similars not accessible from F# PCL • F# compilation toWinJS • http://funscript.info/ • http://www.websharper.com
  • 9. Windows Phone 7 • Almost everything can be done in F# • Still need wrapper C# project • FSharp.Core 4.0 (noType Providers) • No PCL support • Xamarin.iOS / Xamarin.Android • Also allows view to be done in F# • Type Providers currently don’t work, but this will probably improve
  • 10. Tips &Tricks • Create F# wrappers tuned for currying & partial application • LazyAsync • Interfaces to access view elements • Data Binding • Match functions • Option type doesn’t behave like regular DUs • override x.ToString() = sprintf "%A" x
  • 11. Q & A • SourceCode • http://github.com/ovatsus/LearnOnTheGo • http://github.com/ovatsus/UKTrains