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#
FUNCTIONALPROGRAMMING IN F# An introduction Functional Programming Day Jonas Follesø 17/12/2012
ABOUT ME Jonas Follesø Scientist & Manager BEKK Trondheim github.com/follesoe twitter.com/follesoe jonas.folesoe.no
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
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
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
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
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)