addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramlinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Tomas Petricek on F# applications: From domain model to user interface

F# is a great language for developing business logic of an application, but it can be also used for elegantly expressing user interactions. In this talk, we’ll look at both sides of the coin. We’ll develop an (almost complete) application for a retail checkout counter.

In the first part of the talk, we’ll start by looking at domain modeling – using F# types like records and discriminated unions, you can write a domain model that fits on a single page. This makes it easier to understand the application just by looking at the source code. Once we have the domain model, we can implement functions of the business logic and add user interface. In the second part of the talk, we’ll look how to use F# asynchronous workflows to elegantly express interaction logic such as scanning products repeatedly and then completing the trade.

Note From Rick: Please only register if you're sure you can make it.  We have very limited space and expect demand to be high. 

Join or login to comment.

  • Geoffrey S. N.

    I've seen Tomas on a few videos before so I knew what to expect. He did an admirable job in a 60 minute presentation. But if you want the real beef you've got to pay the big bucks and go in June.
    ps: with Manhattan at our feet we chose a place to drink that Bette Davis would've called a 'dump'. fellas, that ain't beer you were drinkin'.

    April 26, 2012

  • JHawk

    Awesome presentation. Would like to suggest a one pass fold implementation for the completeSale function. Seq's are relatively inefficient in F#. let completeSale (items: Sale) =
    let acc (_final: FinalSale) = function
    | SaleItem (_, p, q) ->
    if _final.ContainsKey(p) then _final.Add(p, _final.[p] + q)
    else _final.Add(p,q)
    | _ -> _final
    items |> List.fold acc Map.empty

    Looking forward to next time.

    April 26, 2012

  • Steve G.

    If you weren't there, you need to swallow the bitter truth that you will always be an imperative programmer. Sorry.

    April 26, 2012

  • graham s.

    excellent presentation

    April 26, 2012

  • Gene B.

    Exceptionally well thought-out and delivered presentation. A significant residual value of the presented example for both F# newbees and those already hooked-up as a pattern approach and thought food.
    Overall - very satisfied. My big thanks to Tomas and NYC F# Group organizers for this exciting experience.

    April 26, 2012

  • Richard M.

    Well, last time when demand was high I ended up letting too many folks in and we didn't have enough seats. There were a lot of complaints by those who came and couldn't fit. If you want to take your chances you can always come and call up from the front desk. They'll let you in, I just can't guarantee seating.

    April 23, 2012

  • A former member
    A former member

    Are you going to put "Wait List"-ers on the list at the front desk? I'll stand in the hall to listen.

    April 23, 2012

  • Richard M.

    It will be somewhere between one and two hours.

    April 20, 2012

  • Darren S.

    how long is this event?

    April 20, 2012

50 went

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