SlideShare a Scribd company logo
Introduction to F#
Michael Yeaney, Minitab, Inc.
Who Am I?
● Research Architect at Minitab, Inc.
● Focus on distributed systems (cloud apps)
o Scale/Consistency
o Security
● Provable code/systems junkie
o How do you know a system is behaving correctly?
F#....from Microsoft?
● Functional Language (based on OCaml)
● Focus on “pure” FP first, then OO concepts
● Ideal for certain problem sets
o Scientific/stateless
o Pure Logic
● Awesome for modeling
o Works for any domain
o Great for provers/solvers
Benefits
● Access to .NET framework / ecosystem
● Interoperability with any CLR language
o Can be used to cross “language” barriers
● Available cross-platform
o Windows via .NET Framework / VS
o Linux/OS-X via Mono Framework / Xamarin
o Emacs / Vim, too!!!
Features...
● First-class support of functions as values
● Immutability *by default*
o Opt-in to mutation
● Algebraic Types
● Actor-based model of concurrency
● Type providers
Features: Functions as values
● Functions are treated just as any value
● Partial application
● Composition
Features: Immutability
● Assigned values *cannot* be changed
● However….local shadowing is a thing :-(
● That said...avoids a whole set of problems
o Allows certain performance advantages
Features: Algebraic Types
● Combine (compose) types
● Encode type rules completely in...types. :-
o Types are not classes!!!
● Allows use of discriminated union types
o Quite powerful; hard to express better
● Yields _provable_ code
Features: Actor Model
● Built-in actor model
● Allows lightweight concurrency
● Far more scalable than threads/processes
o Erlang/Akka/etc.
● Not quite as transparent as OTP
o Cross-machine is still quite explicit.
o Frameworks help (FSharp.CloudAgent, Cricket)
Features: Type Providers
● New to F# 3.0
● Provide type information
(methods/properties) from external data
sources
● Many built-in providers available OOB:
o OData, WSDL, SQL, CSV
● Create custom type providers
Great stuff!!! Now what?
● Download!!!! [fsharp.org]
● Learn!!! [fsharp.org]
● Psst….[fsharp.org]
● Use a little...integrate into .NET projects
● Use a lot...entire project in F#
● Not using .NET
o Expose via STDIN/OUT….TCP socket….HTTP(S)
Thank You!!!

More Related Content

What's hot

Beginning Java for .NET developers
Beginning Java for .NET developersBeginning Java for .NET developers
Beginning Java for .NET developers
Andrei Rinea
 
Typescript Fundamentals
Typescript FundamentalsTypescript Fundamentals
Typescript Fundamentals
Sunny Sharma
 
Getting Started with TypeScript
Getting Started with TypeScriptGetting Started with TypeScript
Getting Started with TypeScript
Gil Fink
 
Lo1
Lo1Lo1
Lo1
liankei
 
TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!
Alessandro Giorgetti
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
felixbillon
 
TypeScript 101
TypeScript 101TypeScript 101
TypeScript 101
rachelterman
 
Typescript in 30mins
Typescript in 30mins Typescript in 30mins
Typescript in 30mins
Udaya Kumar
 
Developing Android applications with Ceylon
Developing Android applications with Ceylon Developing Android applications with Ceylon
Developing Android applications with Ceylon
Enrique Zamudio López
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
Aniruddha Chakrabarti
 
Groovy / comparison with java
Groovy / comparison with javaGroovy / comparison with java
Groovy / comparison with java
Liviu Tudor
 
TypeScript intro
TypeScript introTypeScript intro
TypeScript intro
Ats Uiboupin
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
Remo Jansen
 
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the painTypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practices
Iwan van der Kleijn
 
Unsafe to typesafe
Unsafe to typesafeUnsafe to typesafe
Unsafe to typesafe
regisleray
 
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
PROIDEA
 
Learning typescript
Learning typescriptLearning typescript
Learning typescript
Alexandre Marreiros
 
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston LeviIntroduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
Winston Levi
 
AngularConf2015
AngularConf2015AngularConf2015
AngularConf2015
Alessandro Giorgetti
 

What's hot (20)

Beginning Java for .NET developers
Beginning Java for .NET developersBeginning Java for .NET developers
Beginning Java for .NET developers
 
Typescript Fundamentals
Typescript FundamentalsTypescript Fundamentals
Typescript Fundamentals
 
Getting Started with TypeScript
Getting Started with TypeScriptGetting Started with TypeScript
Getting Started with TypeScript
 
Lo1
Lo1Lo1
Lo1
 
TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
TypeScript 101
TypeScript 101TypeScript 101
TypeScript 101
 
Typescript in 30mins
Typescript in 30mins Typescript in 30mins
Typescript in 30mins
 
Developing Android applications with Ceylon
Developing Android applications with Ceylon Developing Android applications with Ceylon
Developing Android applications with Ceylon
 
TypeScript Overview
TypeScript OverviewTypeScript Overview
TypeScript Overview
 
Groovy / comparison with java
Groovy / comparison with javaGroovy / comparison with java
Groovy / comparison with java
 
TypeScript intro
TypeScript introTypeScript intro
TypeScript intro
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
 
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the painTypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practices
 
Unsafe to typesafe
Unsafe to typesafeUnsafe to typesafe
Unsafe to typesafe
 
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
 
Learning typescript
Learning typescriptLearning typescript
Learning typescript
 
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston LeviIntroduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
 
AngularConf2015
AngularConf2015AngularConf2015
AngularConf2015
 

Viewers also liked

Cnc coffee book layout
Cnc coffee book layoutCnc coffee book layout
Cnc coffee book layout
lambor chinee
 
J hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dpJ hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dp
Jonathan Hay
 
Deyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomoDeyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomo
galdamezsalguero
 
Microsoft Convergence Presentation
Microsoft Convergence PresentationMicrosoft Convergence Presentation
Microsoft Convergence Presentation
Terry Larkins, CPA, CGMA, CRIS
 
J hay resume final res 2014 v dp
J hay resume final res 2014 v dpJ hay resume final res 2014 v dp
J hay resume final res 2014 v dp
Jonathan Hay
 
NAJBOLI PREVODITELJ
NAJBOLI PREVODITELJNAJBOLI PREVODITELJ
NAJBOLI PREVODITELJ
Srđan Ćirić
 
J hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dpJ hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dp
Jonathan Hay
 
PROSPECTUS FOR THE AFRICA FELLOWSHIP PROGRAMME
PROSPECTUS FOR THE  AFRICA FELLOWSHIP PROGRAMMEPROSPECTUS FOR THE  AFRICA FELLOWSHIP PROGRAMME
PROSPECTUS FOR THE AFRICA FELLOWSHIP PROGRAMME
DR.PERISUO DEMA
 
My Weigel's Is....
My Weigel's Is....My Weigel's Is....
My Weigel's Is....
Becca Boyd, SPHR
 
Deyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomoDeyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomo
galdamezsalguero
 
Conference brochure
Conference brochureConference brochure
Conference brochure
pzikanga
 

Viewers also liked (13)

Cnc coffee book layout
Cnc coffee book layoutCnc coffee book layout
Cnc coffee book layout
 
J hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dpJ hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dp
 
Deyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomoDeyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomo
 
Microsoft Convergence Presentation
Microsoft Convergence PresentationMicrosoft Convergence Presentation
Microsoft Convergence Presentation
 
J hay resume final res 2014 v dp
J hay resume final res 2014 v dpJ hay resume final res 2014 v dp
J hay resume final res 2014 v dp
 
enterprise-architectuur
enterprise-architectuurenterprise-architectuur
enterprise-architectuur
 
NAJBOLI PREVODITELJ
NAJBOLI PREVODITELJNAJBOLI PREVODITELJ
NAJBOLI PREVODITELJ
 
J hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dpJ hay resume final com pm 2016 v dp
J hay resume final com pm 2016 v dp
 
PROSPECTUS FOR THE AFRICA FELLOWSHIP PROGRAMME
PROSPECTUS FOR THE  AFRICA FELLOWSHIP PROGRAMMEPROSPECTUS FOR THE  AFRICA FELLOWSHIP PROGRAMME
PROSPECTUS FOR THE AFRICA FELLOWSHIP PROGRAMME
 
My Weigel's Is....
My Weigel's Is....My Weigel's Is....
My Weigel's Is....
 
Is2
Is2Is2
Is2
 
Deyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomoDeyvi noe salguero galdamez vocabulario del agronomo
Deyvi noe salguero galdamez vocabulario del agronomo
 
Conference brochure
Conference brochureConference brochure
Conference brochure
 

Similar to Introduction to f#

Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Chauvin Mariot
 
Introdução à Elixir
Introdução à ElixirIntrodução à Elixir
Introdução à Elixir
Guilherme Oliveira
 
Dart the Better JavaScript
Dart the Better JavaScriptDart the Better JavaScript
Dart the Better JavaScript
Jorg Janke
 
Serverless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIsServerless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIs
Nordic APIs
 
An Intro to Scala for PHP Developers
An Intro to Scala for PHP DevelopersAn Intro to Scala for PHP Developers
An Intro to Scala for PHP Developers
HuffPost Code
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript
Corley S.r.l.
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rd
prat0ham
 
Software Craftmanship - Cours Polytech
Software Craftmanship - Cours PolytechSoftware Craftmanship - Cours Polytech
Software Craftmanship - Cours Polytech
yannick grenzinger
 
A sip of elixir
A sip of elixirA sip of elixir
A sip of elixir
Uttam Kini
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
Dave Cross
 
Smalltalk, the dynamic language
Smalltalk, the dynamic languageSmalltalk, the dynamic language
Smalltalk, the dynamic language
mohamedsamyali
 
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
Christophe Alladoum
 
Productivity Enhencement with Visual Studio
Productivity Enhencement with Visual StudioProductivity Enhencement with Visual Studio
Productivity Enhencement with Visual Studio
Ahasan Habib
 
EclipseCon 2015 - Generating business applications from executable models
EclipseCon 2015 - Generating business applications from executable modelsEclipseCon 2015 - Generating business applications from executable models
EclipseCon 2015 - Generating business applications from executable models
Rafael Chaves
 
Unit 1
Unit 1Unit 1
TSC Summit #3 - Reverse engineering and anti debugging techniques
TSC Summit #3 - Reverse engineering and anti debugging techniquesTSC Summit #3 - Reverse engineering and anti debugging techniques
TSC Summit #3 - Reverse engineering and anti debugging techniques
Mikal Villa
 
(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i
Nico Ludwig
 
Elixir Brasil 2019 - Quality: A Panacéia para seu código Elixir
Elixir Brasil 2019 - Quality:  A Panacéia para seu código ElixirElixir Brasil 2019 - Quality:  A Panacéia para seu código Elixir
Elixir Brasil 2019 - Quality: A Panacéia para seu código Elixir
Weverton Timoteo
 
Eclipse Testing Day 2010. Xored Q7
Eclipse Testing Day 2010. Xored Q7Eclipse Testing Day 2010. Xored Q7
Eclipse Testing Day 2010. Xored Q7
platoff
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
WebStackAcademy
 

Similar to Introduction to f# (20)

Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
 
Introdução à Elixir
Introdução à ElixirIntrodução à Elixir
Introdução à Elixir
 
Dart the Better JavaScript
Dart the Better JavaScriptDart the Better JavaScript
Dart the Better JavaScript
 
Serverless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIsServerless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIs
 
An Intro to Scala for PHP Developers
An Intro to Scala for PHP DevelopersAn Intro to Scala for PHP Developers
An Intro to Scala for PHP Developers
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rd
 
Software Craftmanship - Cours Polytech
Software Craftmanship - Cours PolytechSoftware Craftmanship - Cours Polytech
Software Craftmanship - Cours Polytech
 
A sip of elixir
A sip of elixirA sip of elixir
A sip of elixir
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
Smalltalk, the dynamic language
Smalltalk, the dynamic languageSmalltalk, the dynamic language
Smalltalk, the dynamic language
 
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
 
Productivity Enhencement with Visual Studio
Productivity Enhencement with Visual StudioProductivity Enhencement with Visual Studio
Productivity Enhencement with Visual Studio
 
EclipseCon 2015 - Generating business applications from executable models
EclipseCon 2015 - Generating business applications from executable modelsEclipseCon 2015 - Generating business applications from executable models
EclipseCon 2015 - Generating business applications from executable models
 
Unit 1
Unit 1Unit 1
Unit 1
 
TSC Summit #3 - Reverse engineering and anti debugging techniques
TSC Summit #3 - Reverse engineering and anti debugging techniquesTSC Summit #3 - Reverse engineering and anti debugging techniques
TSC Summit #3 - Reverse engineering and anti debugging techniques
 
(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i
 
Elixir Brasil 2019 - Quality: A Panacéia para seu código Elixir
Elixir Brasil 2019 - Quality:  A Panacéia para seu código ElixirElixir Brasil 2019 - Quality:  A Panacéia para seu código Elixir
Elixir Brasil 2019 - Quality: A Panacéia para seu código Elixir
 
Eclipse Testing Day 2010. Xored Q7
Eclipse Testing Day 2010. Xored Q7Eclipse Testing Day 2010. Xored Q7
Eclipse Testing Day 2010. Xored Q7
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
 

Recently uploaded

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 

Recently uploaded (20)

Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 

Introduction to f#

  • 1. Introduction to F# Michael Yeaney, Minitab, Inc.
  • 2. Who Am I? ● Research Architect at Minitab, Inc. ● Focus on distributed systems (cloud apps) o Scale/Consistency o Security ● Provable code/systems junkie o How do you know a system is behaving correctly?
  • 3. F#....from Microsoft? ● Functional Language (based on OCaml) ● Focus on “pure” FP first, then OO concepts ● Ideal for certain problem sets o Scientific/stateless o Pure Logic ● Awesome for modeling o Works for any domain o Great for provers/solvers
  • 4. Benefits ● Access to .NET framework / ecosystem ● Interoperability with any CLR language o Can be used to cross “language” barriers ● Available cross-platform o Windows via .NET Framework / VS o Linux/OS-X via Mono Framework / Xamarin o Emacs / Vim, too!!!
  • 5. Features... ● First-class support of functions as values ● Immutability *by default* o Opt-in to mutation ● Algebraic Types ● Actor-based model of concurrency ● Type providers
  • 6. Features: Functions as values ● Functions are treated just as any value ● Partial application ● Composition
  • 7. Features: Immutability ● Assigned values *cannot* be changed ● However….local shadowing is a thing :-( ● That said...avoids a whole set of problems o Allows certain performance advantages
  • 8. Features: Algebraic Types ● Combine (compose) types ● Encode type rules completely in...types. :- o Types are not classes!!! ● Allows use of discriminated union types o Quite powerful; hard to express better ● Yields _provable_ code
  • 9. Features: Actor Model ● Built-in actor model ● Allows lightweight concurrency ● Far more scalable than threads/processes o Erlang/Akka/etc. ● Not quite as transparent as OTP o Cross-machine is still quite explicit. o Frameworks help (FSharp.CloudAgent, Cricket)
  • 10. Features: Type Providers ● New to F# 3.0 ● Provide type information (methods/properties) from external data sources ● Many built-in providers available OOB: o OData, WSDL, SQL, CSV ● Create custom type providers
  • 11. Great stuff!!! Now what? ● Download!!!! [fsharp.org] ● Learn!!! [fsharp.org] ● Psst….[fsharp.org] ● Use a little...integrate into .NET projects ● Use a lot...entire project in F# ● Not using .NET o Expose via STDIN/OUT….TCP socket….HTTP(S)