Introduction to F#

1,741 views

Published on

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

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,741
On SlideShare
0
From Embeds
0
Number of Embeds
83
Actions
Shares
0
Downloads
29
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • 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#

    1. 1. FUNCTIONALPROGRAMMING IN F# An introduction Functional Programming Day Jonas Follesø 17/12/2012
    2. 2. ABOUT ME Jonas Follesø Scientist & Manager BEKK Trondheim github.com/follesoe twitter.com/follesoe jonas.folesoe.no
    3. 3. 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
    4. 4. 2006: IT2105 - FunctionalProgramming
    5. 5. Scheme
    6. 6. 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#
    7. 7. Disclaimer:F# beginner
    8. 8. Part 1What is F#?
    9. 9. WHAT IS F#? … a statically typed, functional first, hybrid, open source, programming language for the CLR…
    10. 10. IN MICROSOFT OWN WORDS… … a productive, supported, interoperable, functional language that allows you to write simple code to solve complex problems.
    11. 11. QUICK SHOW OF HANDS… JVM? CLR?
    12. 12. IT HAS BEEN SAID… …F# is to C# what Scala is to Java...
    13. 13. 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
    14. 14. F# LANGUAGE INFLUENCES OCaml F# C#/.NET Similar core language Similar object model
    15. 15. 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
    16. 16. Demo: F#Fundamentals
    17. 17. Part 2:Units ofMeasure
    18. 18. MARS CLIMATE ORBITER
    19. 19. 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 softwarehttp://mars.jpl.nasa.gov/msp98/news/mco991110.html
    20. 20. Demo:Units ofMeasure
    21. 21. Part 3 TypeProviders
    22. 22. THE CHALLENGE1. The world is information rich2. Our programming languages are information sparse
    23. 23. 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
    24. 24. IMPEDANCE MISS MATCH• Need bridging mechanisms to access structured data in our programs • Hand-written static libraries • Generated static libraries • Dynamically-typed information representation
    25. 25. 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
    26. 26. Demo: TypeProviders
    27. 27. Part 5 AsyncWorkflows
    28. 28. Part 6Summary & Resources
    29. 29. Why?
    30. 30. POSSIBLE REASONS – MY OWN SPECULATIONS C# is too Microsoft good? positioning?
    31. 31. 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)
    32. 32. MICROSOFT POSITIONING C#, VB, F# 3.0 F# 2.0 HTML5, JS Transformation, Access Analysis, Presentation, Data, Algorithms, Publication, Information, Code, Experience Services Parallel
    33. 33. LearningResources
    34. 34. HTTP://WWW.TRYFSHARP.ORG/
    35. 35. HTTP://FSHARPFORFUNANDPROFIT.COM/
    36. 36. FILE – NEW – F# TUTORIAL
    37. 37. BOOKSProgramming F# 3.0 Expert F# 3.0by Chris Smith by Don Syme, Adam Granicz and Antonio Cisternino
    38. 38. THANK YOU! Jonas Follesøhttp://jonas.follesoe.no @follesoe

    ×