Slide 1

Slide 1 text

Our Experience So far With F# Matt & Jake

Slide 2

Slide 2 text

What We’re Building - Prism global nav BC - ~8 listeners - 1 publisher - 1 api

Slide 3

Slide 3 text

Why F# for us? - Like functional programming, want more - .Net ecosystem & expertise - Appeal of F# when coming to .Net - Strong types

Slide 4

Slide 4 text

The Language - Syntax is different than most imperative - Took days to grok basic syntax - Felt productive w/in a few weeks - Can use all of .Net framework - Interop sometimes awkward - TDD is great - Light stubs, no explicit interfaces

Slide 5

Slide 5 text

Deployment - Pre-existing Windows servers - server-farm for listeners - internal-tools for api - Templates exist for TeamCity - Operationally equivalent w/ all other .Net warez

Slide 6

Slide 6 text

Shared Libs - Can use all PS .Net libraries - messaging - logging - settings - postgres

Slide 7

Slide 7 text

Abstractions - Mostly just functions - Didn’t use classes except for interop - No IoC container

Slide 8

Slide 8 text

Tooling - Visual Studio - F# Power Tools are great - Rename, import, navigate to - ReSharper mostly absent - Weak refactorings - F# dotnetcore is not ready for prod

Slide 9

Slide 9 text

Dynamic Data - www.youneedlotsoftypes.com - Painful in test - Partial stubs - Incomplete request bodies - Duck typing supposedly possible

Slide 10

Slide 10 text

Type Inference - Nice to not have to write out all types - Sometimes inference gets confused - Have to annotate - Later can remove

Slide 11

Slide 11 text

Code Organization - Modules group functions - Trying different ways to organize types - Forward-only compiler - Still getting better

Slide 12

Slide 12 text

Quirfuffles - Just go add an assemblyRedirect - Just recompile src to make ur tests happy - Just restart Visual Studio

Slide 13

Slide 13 text

Learning - Some strong resources - fsharpforfunandprofit.com - Pluralsight vids \m/ - Good Google hits - Still growing in our proficiency - Language still has untapped potential

Slide 14

Slide 14 text

Who might like F#? Likes FP and… - .Net - ops equivalent, all libs - Strong types - no wild dynamic code, sum types - Safety - immutability by default, total functions - Type inference - modern convenience - Expressive functional constructs - pipes, function composition, auto curry, pattern matching

Slide 15

Slide 15 text

What now? - Finish Prism BC - Determine if there’s enough org interest to support this and future F# projects - Move F# from “investigate” to “avoid” or “adopt” - Profit

Slide 16

Slide 16 text

IGHT! Thank you