Join join us for a talk on F# by Joe Koberg at a new meeting location we're trying out: VersionOne.com's downtown location in Ponce Spring Lofts, just minutes from Manuel's Tavern!
About Joe Koberg
Joe Koberg is a developer at VersionOne. He's been exploring F# and other functional languages. His talk will showcase how to build a bowling scorer with F#, while explaining the functional programming mindset. Many concepts may be new to .NET devs first encountering F# and/or the functional programming paradigm.
Joe also participates in Freeside Atlanta, which is a "hacker space collective". Check out the Hacker Space Manifesto to learn more.
7:00 - 7:30 : Arrive, register for prize raffle (30 day Pluralsight giveaway), and munch on free pizza and guzzle beer we'll provide!
7:30 - 7:40 : Announcements
7:40 - 8:30 : Presentation
8:30 - 9:30 : Open discussion, wind down
Source Code for Talk
Full project: https://github.com/jkoberg/Bowling-in-FSharp
More About F#
"F# is a succinct, expressive and efficient functional and object-oriented language for .NET which helps you write simple code to solve complex problems."
Try F# In Your Web Browser
Joe Koberg's Notes on F#
Major language features:
- Type inference - the compiler infers the type of expressions, so you dont have to specify them. Sometimes you need to give it some hints if it doesn't have enough information (polymorphic overrides of a method)
- Functional features - discriminated unions, partial application, tail recursion, pattern matching, etc...
- Abstraction of functions and values lead to fun operators, like the pipeline operators http://lorgonblog.wordpress.com/2008/03/30/pipelining-in-f/
Why use F#
- Clean representation of clean programming metaphors
- Concise representation of OO and imperative metaphors
- First-class status in visual studio / Microsoft world
- Language convieniences such as tuples, closures, optional and keyword arguments, interactive prompt, etc...
- Fast, static .NET compiled output
- Good to understand side effects and pure functions. Calling functions for side effects may not work out the way you expect (See hello world)
- "Mutability" mindset should be dropped, where you keep values in "places" and update those "places" with new values. Better to think of a chain of transformations.
- Scala (Basically like F# if you're a java person)
- OCAML (F# is derived from OCAML)