Introduction to F#
Upcoming SlideShare
Loading in...5

Introduction to F#



Slides from Functional Programming Day in Oslo 17. December - Introduction to F#. Slides are in Norwegian.

Slides from Functional Programming Day in Oslo 17. December - Introduction to F#. Slides are in Norwegian.



Total Views
Views on SlideShare
Embed Views



5 Embeds 129 97 25 5 1 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • 1973, Robin Milner at the University of Edinburgh developed the ML programming language to develop proof tactics for the LCF Theorem prover. Lisp continued to be used for years as the favored language of AI researchers.ML stands out among other functional programming languages; its polymorphic functions made it a very expressive language, while its strong typing and immutable data structures made it possible to compile ML into very efficient machine code.L's relative success spawned an entire family of ML-derived languages, including Standard ML, Caml, and its most famous dialect called OCaml which unifies functional programming with object-oriented and imperative styles.F# is essentially a .Net implementation of OCaml, combining the power and expressive syntax of functional programming with the tens of thousands of classes which make up the .NET class library.
  • Mars Climate Orbiter ble skutt opp 11. desember 1998. Oppdraget var å studere været, klimaet, og vann- og karbondioksidinnhold på planeten Mars. Den 23. september 1999 skulle farkosten gå inn i bane rundt Mars, men en beregningsfeil resulterte i at Mars Climate Orbiter gikk inn 90 km for lavt. Dette førte til for store påkjenninger og friksjon fra Mars atmosfære, og fartøyet gikk i oppløsning.
  • NASAs undersøkelser etter ulykken avdekket at feilen skyltes en software-feil, hvor to delsystemer brukte forskjellig sett med måleenheter. Det ene systemet brukte imperiske enheter (pound-seconds, lbf*s) istedenfor metriske enheter (newton-seconds, N·s) som spesifisert av NASA.
  • Mars 2012: Microsoft's F# continues to evolve, with the recent release of F# 3.0 beta. F# is excellent at concisely expressing business and domain logic. Developers trying to achieve explicit business logic within an application may opt to express their domain in F# with the majority of plumbing code in C#.
  • Takk for oss.Ha en heltfantastiskfagdag!

Introduction to F# Introduction to F# Presentation Transcript

  • FUNCTIONALPROGRAMMING IN F# An introduction Functional Programming Day Jonas Follesø 17/12/2012
  • ABOUT ME Jonas Follesø Scientist & Manager BEKK Trondheim
  • AGENDA Part 1 – F# & it’s history Part 2 – F# Fundamentals Part 3 – Units of Measure Part 4 – Type Providers Part 5 – Async Workflows Part 6 – Summary & Resources
  • 2006: IT2105 - FunctionalProgramming
  • Scheme
  • Func<int, bool> isEven = n => n%2 == 0;Action<int> print = n => Console.WriteLine("The number is {0}", n);var numbers = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};numbers.Where(isEven) .ToList() .ForEach(print); C#
  • Disclaimer:F# beginner
  • Part 1What is F#?
  • WHAT IS F#? … a statically typed, functional first, hybrid, open source, programming language for the CLR…
  • IN MICROSOFT OWN WORDS… … a productive, supported, interoperable, functional language that allows you to write simple code to solve complex problems.
  • IT HAS BEEN SAID… …F# is to C# what Scala is to Java...
  • HISTORY • Designed and implemented by Don Syme at Microsoft Research • Wanted a functional programming language on the CLR for research and scientific computingPhoto: John Lamb
  • F# LANGUAGE INFLUENCES OCaml F# C#/.NET Similar core language Similar object model
  • HISTORY Pre 2005 2005 2010 2012 F# 0.9 F# 1.0 F# 2.0 F# 3.0 Microsoft VS2005 VS2010 VS2012 Research Download Built-in Built-in 04. November 2010 F# compiler and libraries released under Apache 2.0 license
  • Demo: F#Fundamentals
  • Part 2:Units ofMeasure
  • MARS CLIMATE ORBITERThe root cause of the loss of the spacecraft was the failedtranslation of English units into metric units in a segment ofground-based, navigation-related mission software
  • Demo:Units ofMeasure
  • Part 3 TypeProviders
  • THE CHALLENGE1. The world is information rich2. Our programming languages are information sparse
  • IMPEDANCE MISS MATCH• Rich information spaces with structured data Open APIs Web OData Databases and data Services markeds XML Semantic CRM data Others… Documents Web
  • IMPEDANCE MISS MATCH• Need bridging mechanisms to access structured data in our programs • Hand-written static libraries • Generated static libraries • Dynamically-typed information representation
  • F# 3.0 TYPE PROVIDERSA Type Provider is… Statement completion for dataA design-time component that provides acomputed space of types and methods Extensible and openA compiler/IDE extension Breaking down walls!The static counterpart to dynamic languages:Compile-time meta programming
  • Demo: TypeProviders
  • Part 5 AsyncWorkflows
  • Part 6Summary & Resources
  • Why?
  • POSSIBLE REASONS – MY OWN SPECULATIONS C# is too Microsoft good? positioning?
  • IS C# TOO GOOD?• Implicitly Typed Local Variables• Extension Methods• Lambda Expressions and Higher Order Functions• LINQ• Task Parallel Library• Extension Methods• New asynchronous language constructs (async & await)
  • MICROSOFT POSITIONING C#, VB, F# 3.0 F# 2.0 HTML5, JS Transformation, Access Analysis, Presentation, Data, Algorithms, Publication, Information, Code, Experience Services Parallel
  • LearningResources
  • BOOKSProgramming F# 3.0 Expert F# 3.0by Chris Smith by Don Syme, Adam Granicz and Antonio Cisternino
  • THANK YOU! Jonas Follesø @follesoe