addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwchatcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrosseditemptyheartexportfacebookfolderfullheartglobegmailgoogleimagesinstagramlinklocation-pinmagnifying-glassmailminusmoremuplabelShape 3 + Rectangle 1outlookpersonplusprice-ribbonImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruseryahoo

Striking into F#

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.

Meetup Agenda

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

https://github.com/jkoberg/Bowling-in-FSharp/blob/master/BowlingVS2010/BowlingProject/bowling.fs

Full project: https://github.com/jkoberg/Bowling-in-FSharp


More About F#

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/

"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

http://www.tryfsharp.org/

 

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

Conceptual hurdles

  • 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.

Resources

Similar Languages

  • Scala (Basically like F# if you're a java person)
  • Haskell
  • OCAML (F# is derived from OCAML)

Join or login to comment.

23 went

Our Sponsors

  • Pluralsight Training

    Free Pluralsight .NET training videos -- entire course library!

  • VersionOne

    Hosting space in downtown Atlanta and Alpharetta, and food and drinks!

  • O'Reilly

    Review copies of products, donated books, items, discounts

  • Apress

    Free review copies, 50% off discounts, Giveaways for raffles/events

  • Manning Publications Co.

    User group discounts, Review copies, free books, speakers

  • eConsultants Inc

    Food and Drinks.

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy