SlideShare ist ein Scribd-Unternehmen logo
1 von 19
T W I T T E R : @ R A C H E L R E E S E
B L O G : R A C H E L R E E . S E
G I T H U B : R A C H E L R E E S E
iOS App Development with
Xamarin and F#
Why F#?
“
”
Y A N C U I
L E A D S E R V E R E N G I N E E R , G A M E S Y S ( S O U R C E )
F#…offers us an order of magnitude
increase in productivity and allows one
developer to perform the work…of a
team of dedicated developers on an
existing Java-based solution...
F# Testimonials
“
”
D A R R E N P L A T T
A M Y R I S B I O T E C H N O L O G Y ( S O U R C E )
The UI work is especially gratifying,
because state of the art for a lot of
genomic data display is still PNG images
embedded in JavaScript and with F# I can
render half a million data points on a web
page without jumping through hoops.
F# Testimonials
StartNewGame <| GetNewGameBoard()
F# Fundamentals
|>
Significant whitespace
Immutable by default
//names is tuple of (name, id)
Array.Parallel.partition (fun g -> ids.Contains(snd g)) names
|> fst
|> Array.toList
[1..10]
|> List.filter (fun x -> x % 2 = 0)
|> List.map (fun x -> x + 3)
|> List.sum
operaHouses //(Name, Current Productions) for each opera house
|> Array.map (fun (x,y) -> x, y |> Seq.toArray))
|> Array.filter (fun (x,y) -> y.Length > 0)
Quote of the Week blog post
Option Types
F# Fundamentals
F# C#
type Transport =
| Car of Make:string * Model:string
| Bus of Route:int
| Bicycle
public abstract class Transport{ }
public abstract class Car : Transport {
public string Make { get; private set; }
public string Model { get; private set; }
public Car (string make, string model) {
this.Make = make;
this.Model = model;
}
}
public abstract class Bus : Transport {
public int Route { get; private set; }
public Bus (int route) {
this.Route = route;
}
}
public class Bicycle: Transport { }
...
F# Fundamentals: Concise Code with DUs
F# Fundamentals: Pattern Matching
type Transport =
| Car of Make:string * Model:string
| Bus of Route:int
| Bicycle
let getThereVia (transport:Transport) =
match transport with
| Car (make,model) -> ()
| Bus route -> ()
Several reasons why you should learn F#
Discriminated unions
Immutable by default
Pattern matching
Option type
Custom operators
REPL
F# vs. Swift
‘Enums’Discriminated unions
Constant or VariableImmutable by default
Enhanced switchPattern matching
OptionalsOption type
Custom operatorsCustom operators
REPLREPL
No type providers
Lacks full type
inference
No units of
measure
Requires “return”
Still void, no unit
No parallelism &
async!
Single platform Young language
No easy cloning
syntax for
structures (e.g.
records)
Literal data
structures are only
list and dict
Simpler garbage
collection process
Active Patterns
But Swift is still missing out
TYPE PROVIDERS!
UNITS OF MEASURE!
Why F#?
Some existing
type providers.
See here for a full list.
Minesweeper Azure
Choose your
own
adventure
Matla
b RSS
XAML Rock, Paper,
Scissors Oracle MVVMCross SignalR
FunScript
R File System Python Regex
CSV World Bank SQLite Don Syme XML
Squirrels LINQ
IKV
M
MS
Dynamics
CRM
Freebase
JSON SQL Server
SQL Server
with EF
powershell Dates
Hadoo
p
OData WSDL Apiary Facebook
Get data
from
Hadoop
SQL Server
SQLite
RSS
Freebase
Oracle
CSV
OData
World Bank
JSON
Process
with
Matlab
Powershell
Regex
R
SignalR
Python
LINQ
Visualize
with
F#
Matlab
R
Get creative.
Why Xamarin?
Fully
Native
Cross
Platform
iOS Fundamentals: AppDelegate
iOS Fundamentals: ViewController
Minesweeper
T W I T T E R : @ R A C H E L R E E S E
B L O G : R A C H E L R E E . S E
G I T H U B : R A C H E L R E E S E
iOS App Development with
Xamarin and F#

Weitere ähnliche Inhalte

Was ist angesagt?

Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform AtlantaJesus Manuel Olivas
 
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...Chris Shenton
 
!!Con - The Creative Programmer
!!Con - The Creative Programmer!!Con - The Creative Programmer
!!Con - The Creative ProgrammerCatt Small
 
inline function
inline function inline function
inline function imran khan
 
Try Jetpack Compose
Try Jetpack ComposeTry Jetpack Compose
Try Jetpack ComposeLutasLin
 
Apache Flink - a Gentle Start
Apache Flink - a Gentle StartApache Flink - a Gentle Start
Apache Flink - a Gentle StartLiangjun Jiang
 
Embulk at Treasure Data
Embulk at Treasure DataEmbulk at Treasure Data
Embulk at Treasure DataSatoshi Akama
 
What's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewWhat's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewMaxim Veksler
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber railsninad23p
 
Mercury: A Functional Review
Mercury: A Functional ReviewMercury: A Functional Review
Mercury: A Functional ReviewMark Cheeseman
 
Avoiding Callback Hell From JavaScript
Avoiding Callback Hell From JavaScriptAvoiding Callback Hell From JavaScript
Avoiding Callback Hell From JavaScriptSarunyhot Suwannachoti
 
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflow
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflowSheffield_R_ July meeting - Interacting with R - IDEs, Git and workflow
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflowPaul Richards
 
10 minute command line apps with zio cli
10 minute command line apps with zio cli10 minute command line apps with zio cli
10 minute command line apps with zio cliAiswarya Prakasan
 
Idiomatic Kotlin for Android
Idiomatic Kotlin for AndroidIdiomatic Kotlin for Android
Idiomatic Kotlin for AndroidMatthew Clarke
 
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensatorWrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensatorFlowa Oy
 
Padrino::Validation::HTML5
Padrino::Validation::HTML5Padrino::Validation::HTML5
Padrino::Validation::HTML5Hanae Aoki
 
A live-coding introduction to Mill : finally a build tool we can all understand
A live-coding introduction to Mill : finally a build tool we can all understandA live-coding introduction to Mill : finally a build tool we can all understand
A live-coding introduction to Mill : finally a build tool we can all understandGuillaume Galy
 
Presentation kyushu-2018
Presentation kyushu-2018Presentation kyushu-2018
Presentation kyushu-2018masahitojp
 

Was ist angesagt? (20)

Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform Atlanta
 
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...
Squeezing Machine Learning into Serverless for Image Recognition - AWS Meetup...
 
!!Con - The Creative Programmer
!!Con - The Creative Programmer!!Con - The Creative Programmer
!!Con - The Creative Programmer
 
inline function
inline function inline function
inline function
 
Try Jetpack Compose
Try Jetpack ComposeTry Jetpack Compose
Try Jetpack Compose
 
Apache Flink - a Gentle Start
Apache Flink - a Gentle StartApache Flink - a Gentle Start
Apache Flink - a Gentle Start
 
Embulk at Treasure Data
Embulk at Treasure DataEmbulk at Treasure Data
Embulk at Treasure Data
 
Runtime performance
Runtime performanceRuntime performance
Runtime performance
 
What's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewWhat's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overview
 
Ninad cucumber rails
Ninad cucumber railsNinad cucumber rails
Ninad cucumber rails
 
Mercury: A Functional Review
Mercury: A Functional ReviewMercury: A Functional Review
Mercury: A Functional Review
 
Avoiding Callback Hell From JavaScript
Avoiding Callback Hell From JavaScriptAvoiding Callback Hell From JavaScript
Avoiding Callback Hell From JavaScript
 
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflow
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflowSheffield_R_ July meeting - Interacting with R - IDEs, Git and workflow
Sheffield_R_ July meeting - Interacting with R - IDEs, Git and workflow
 
10 minute command line apps with zio cli
10 minute command line apps with zio cli10 minute command line apps with zio cli
10 minute command line apps with zio cli
 
Ansible on AWS
Ansible on AWSAnsible on AWS
Ansible on AWS
 
Idiomatic Kotlin for Android
Idiomatic Kotlin for AndroidIdiomatic Kotlin for Android
Idiomatic Kotlin for Android
 
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensatorWrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensator
 
Padrino::Validation::HTML5
Padrino::Validation::HTML5Padrino::Validation::HTML5
Padrino::Validation::HTML5
 
A live-coding introduction to Mill : finally a build tool we can all understand
A live-coding introduction to Mill : finally a build tool we can all understandA live-coding introduction to Mill : finally a build tool we can all understand
A live-coding introduction to Mill : finally a build tool we can all understand
 
Presentation kyushu-2018
Presentation kyushu-2018Presentation kyushu-2018
Presentation kyushu-2018
 

Ähnlich wie iOS App Development with F# and Xamarin

F# for functional enthusiasts
F# for functional enthusiastsF# for functional enthusiasts
F# for functional enthusiastsJack Fox
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#Talbott Crowell
 
F# and functional programming
F# and functional programmingF# and functional programming
F# and functional programmingramikarjalainen
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Guillaume Laforge
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Guillaume Laforge
 
Machine Learning as a Service: making sentiment predictions in realtime with ...
Machine Learning as a Service: making sentiment predictions in realtime with ...Machine Learning as a Service: making sentiment predictions in realtime with ...
Machine Learning as a Service: making sentiment predictions in realtime with ...Daniel Pyrathon
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Andres Almiray
 
Haxe by sergei egorov
Haxe by sergei egorovHaxe by sergei egorov
Haxe by sergei egorovSergei Egorov
 
Back to the Future with ES.next
Back to the Future with ES.nextBack to the Future with ES.next
Back to the Future with ES.nextGrgur Grisogono
 
Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...Codemotion Dubai
 
Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Kevin Avignon
 
Three Functional Programming Technologies for Big Data
Three Functional Programming Technologies for Big DataThree Functional Programming Technologies for Big Data
Three Functional Programming Technologies for Big DataDynamical Software, Inc.
 
Four Languages From Forty Years Ago
Four Languages From Forty Years AgoFour Languages From Forty Years Ago
Four Languages From Forty Years AgoScott Wlaschin
 

Ähnlich wie iOS App Development with F# and Xamarin (20)

F# for functional enthusiasts
F# for functional enthusiastsF# for functional enthusiasts
F# for functional enthusiasts
 
F# and the DLR
F# and the DLRF# and the DLR
F# and the DLR
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Exploring SharePoint with F#
Exploring SharePoint with F#Exploring SharePoint with F#
Exploring SharePoint with F#
 
F# and functional programming
F# and functional programmingF# and functional programming
F# and functional programming
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008Groovy Introduction - JAX Germany - 2008
Groovy Introduction - JAX Germany - 2008
 
Practical F#
Practical F#Practical F#
Practical F#
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
 
Machine Learning as a Service: making sentiment predictions in realtime with ...
Machine Learning as a Service: making sentiment predictions in realtime with ...Machine Learning as a Service: making sentiment predictions in realtime with ...
Machine Learning as a Service: making sentiment predictions in realtime with ...
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
 
F# 101
F# 101F# 101
F# 101
 
Async and Parallel F#
Async and Parallel F#Async and Parallel F#
Async and Parallel F#
 
Async and Parallel F#
Async and Parallel F#Async and Parallel F#
Async and Parallel F#
 
Haxe by sergei egorov
Haxe by sergei egorovHaxe by sergei egorov
Haxe by sergei egorov
 
Back to the Future with ES.next
Back to the Future with ES.nextBack to the Future with ES.next
Back to the Future with ES.next
 
Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...
 
Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#
 
Three Functional Programming Technologies for Big Data
Three Functional Programming Technologies for Big DataThree Functional Programming Technologies for Big Data
Three Functional Programming Technologies for Big Data
 
Four Languages From Forty Years Ago
Four Languages From Forty Years AgoFour Languages From Forty Years Ago
Four Languages From Forty Years Ago
 

Kürzlich hochgeladen

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Kürzlich hochgeladen (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

iOS App Development with F# and Xamarin

  • 1. T W I T T E R : @ R A C H E L R E E S E B L O G : R A C H E L R E E . S E G I T H U B : R A C H E L R E E S E iOS App Development with Xamarin and F#
  • 3. “ ” Y A N C U I L E A D S E R V E R E N G I N E E R , G A M E S Y S ( S O U R C E ) F#…offers us an order of magnitude increase in productivity and allows one developer to perform the work…of a team of dedicated developers on an existing Java-based solution... F# Testimonials
  • 4. “ ” D A R R E N P L A T T A M Y R I S B I O T E C H N O L O G Y ( S O U R C E ) The UI work is especially gratifying, because state of the art for a lot of genomic data display is still PNG images embedded in JavaScript and with F# I can render half a million data points on a web page without jumping through hoops. F# Testimonials
  • 5. StartNewGame <| GetNewGameBoard() F# Fundamentals |> Significant whitespace Immutable by default //names is tuple of (name, id) Array.Parallel.partition (fun g -> ids.Contains(snd g)) names |> fst |> Array.toList [1..10] |> List.filter (fun x -> x % 2 = 0) |> List.map (fun x -> x + 3) |> List.sum operaHouses //(Name, Current Productions) for each opera house |> Array.map (fun (x,y) -> x, y |> Seq.toArray)) |> Array.filter (fun (x,y) -> y.Length > 0)
  • 6. Quote of the Week blog post Option Types F# Fundamentals
  • 7. F# C# type Transport = | Car of Make:string * Model:string | Bus of Route:int | Bicycle public abstract class Transport{ } public abstract class Car : Transport { public string Make { get; private set; } public string Model { get; private set; } public Car (string make, string model) { this.Make = make; this.Model = model; } } public abstract class Bus : Transport { public int Route { get; private set; } public Bus (int route) { this.Route = route; } } public class Bicycle: Transport { } ... F# Fundamentals: Concise Code with DUs
  • 8. F# Fundamentals: Pattern Matching type Transport = | Car of Make:string * Model:string | Bus of Route:int | Bicycle let getThereVia (transport:Transport) = match transport with | Car (make,model) -> () | Bus route -> ()
  • 9. Several reasons why you should learn F# Discriminated unions Immutable by default Pattern matching Option type Custom operators REPL
  • 10. F# vs. Swift ‘Enums’Discriminated unions Constant or VariableImmutable by default Enhanced switchPattern matching OptionalsOption type Custom operatorsCustom operators REPLREPL
  • 11. No type providers Lacks full type inference No units of measure Requires “return” Still void, no unit No parallelism & async! Single platform Young language No easy cloning syntax for structures (e.g. records) Literal data structures are only list and dict Simpler garbage collection process Active Patterns But Swift is still missing out
  • 12. TYPE PROVIDERS! UNITS OF MEASURE! Why F#?
  • 13. Some existing type providers. See here for a full list. Minesweeper Azure Choose your own adventure Matla b RSS XAML Rock, Paper, Scissors Oracle MVVMCross SignalR FunScript R File System Python Regex CSV World Bank SQLite Don Syme XML Squirrels LINQ IKV M MS Dynamics CRM Freebase JSON SQL Server SQL Server with EF powershell Dates Hadoo p OData WSDL Apiary Facebook
  • 14. Get data from Hadoop SQL Server SQLite RSS Freebase Oracle CSV OData World Bank JSON Process with Matlab Powershell Regex R SignalR Python LINQ Visualize with F# Matlab R Get creative.
  • 19. T W I T T E R : @ R A C H E L R E E S E B L O G : R A C H E L R E E . S E G I T H U B : R A C H E L R E E S E iOS App Development with Xamarin and F#

Hinweis der Redaktion

  1. Play Minesweeper game. I work at FFL using iOS and F#. Just helped start the Nash F# UG & am involved in the Nashville Xamarin UG. One of the LambdaLadies founders. Slides up after the talk. You should all move to Nashville!!! :D
  2. Maybe you’re a C# dev or maybe you’re an iOS dev right now. Why should you switch?
  3. Clarity & conciseness of code.
  4. F# gets flack for lack of UI support. Not using editors: true for every gui technology. Winforms & ASP.NET, amirite?
  5. Start with |> Like unix shell scripting pipe Flow works better backwards sometimes. Note whitespace.
  6. NullReferenceException can be obviated because of option types. Similar to nullable<int> but different because: Can be used on any type (strings, functions) When pattern matched on, forces you to consider None case Can use map, iter, etc. functions. Nestable: Option<Option<int>> is valid.
  7. Sort of like enums. Can model smaller obj hierarchies with them, like here.
  8. Can pattern match on values, tuples, records, DUs.
  9. Type providers are a way to return typed data from an external data source. UoM because game physics Phil tags some integers as <pixel> to represent actual screen space – plus self-documenting. <Tasky Data demo> <UoM demo> <Freebase demo>
  10. Why not swift. Why not PhoneGap.
  11. If currently an ios dev, this should look familiar because of all the UI-prefaced things. AppDelegate must be registered Main needs to be labeled as an Entry Point. <- is assignment FinishedLaunching: Set root view controller.
  12. Inherit from UIViewController() Override ViewDidLoad, ViewWillAppear, ViewDidAppear…
  13. Work at FFL using iOS and F#. Just helped start the Nash F# user group. Previously ran VT Fun. This was a difficult talk to put together. Half the room knows F#, but not iOS or Xamarin, and the other half’s the opposite. Start w/ covering why you should consider F# Then some language basics And Xamarin basics.