In this episode I talk with Scott Wlaschin. We talk his introduction to functional programming and F#, making the ideas accessible without needing a math background, functional programming being similar to object oriented programming taken to the extreme, and much, much more.
Our Guest, Scott Wlaschin
@ScottWlaschin on Twitter
F# for fun and profit
Announcements
Lambda World will be taking place September 30th & October 1st, 2016. Lambda.World is the longest functional programming conference in Spain and Portugal and one of the biggest in Europe. Visit www.lambda.world to find out more and to register.
The 2016 edition of ScalaIO will take place in Lyon, France, on 27th and 28th of October. Visit http://scala.io/ for more information and to register.
CodeMesh is taking place the 3rd and 4th of November with tutorials on the 2nd of November. Tickets are available now, but they are going fast. Visit codemesh.io to register and submit your talk.
Scala Wave is coming up on the 25th and 26th of November in GdaĆsk, Poland. Visit http://www.scalawave.io/ to find out more and sign up for their newsletter for updates.
Destination Code, a new unconference starting in Utah, is having its inaugural event this December. Visit http://www.destination.codes/ to find out more.
If you have a conference related to functional programming, contact me, and I will be happy to announce it.
Topics
About Scott
F# for fun and profit
Ten reasons not to use a statically typed functional programming language
F#
How Scott got introduced to functional programming
Smalltalk
Python
How Scott got introduced to F#
Haskell
OCaml
Miranda
Convenience of getting started in F#
Benefit of being on a known platform
Immutability
Partial Application
Yaron Minsky
Jane Street
Making Illegal States Unrepresentable
Learning a language by writing a blog
Reluctance to use jargon
“I had to translate Haskell into F#”
“Why do people care about Monads, Monoids, Applicatives, and all that?”
Railway Oriented Programming
Difference between giving someone tools vs giving someone a recipe
Railway Oriented Programming is really about error handling
What are some of the most well received topics from his content for getting started
FP Patterns presentation
A functional approach to Domain Driven Design
Scott’s slide on “Patterns in Functional versus Object Oriented Programming”
“How do you do a loop [if you don’t have immutability]?”
“The most common functional programming language is Excel macros
Organization of F# for fun and profit site
F# for fun and profit e-book
GitBook
Dr Frankenfunctor and the Monadster
April Fool’s post of migrating to Scala
Scala for fun and profit
Understanding fundamentals and patterns
Monoids series
The Elevated World series
Schism between mathematically oriented and humanist sides of programming
“[Functional Programming] is not that scary”
“Object Oriented design principles taken to the extreme look a lot like Functional Programming.”
The Design of Everyday Things
Don’t Make Me Think
The call to start looking into usability of your applications
What is on Scott’s radar
“If your young, learn as many languages as possible”
Learn how to be a better teacher
Dan North’s Accelerating Agile talk
As always, a giant Thank You goes to David Belcher for the logo design.
One reply on “Functional Geekery Episode 66 – Scott Wlaschin”
I like Scott’s practical approach to functional programming!
To try to make a summary of “Theoretical vs Practical” (to my view at least) I would say that:
1) is very important to be aware that using a functional style You are basing Your program onto solid theoretical basis. For this reasons You may be confident on the correctness even though You do have a deep knowledge of the theoretical foundation
2) if You are a library developer maybe You may need more solid understanding of the theory behind it but if You are an ordinary business programmer maybe You just need to know the “recipes”
3) It’s always fun to try to get a more profound understanding of what You are using but this may come (e probably will come) with time. So I’ll keep studying!
4) as an Engineer is not only important to build something but is even more important to build it in a reasonable time and cost (and of course quality). You need the right mix!
As an aside when I was at the university during an exam, I came up with a very complex and maybe elegant mathematical model to solve a problem but I did not have the necessary mathematical knowledge to solve it! So what’s the point! The guy that was able to come up with the final solution was the one that set up a more practical model for which it knew the mathematical solution. Simple enough!
Another great hint by Scott is the use of Types to model Your domain: it’s invaluable to being able to look at one page and understand Your whole domain vs searching tenths of files in C# to try to remember what You were trying to do!
This is not only true when You are looking at an old project but even on the project You are working on right now: some time You need to complete some work for another customer or focus on something else and one week later You need to get back at where You were and remember what You were working on. This my become overwhelming with time!
So once again a Giant Thank You to Scott for the great job and thank You Proctor for the Functional Geekery Podcast!
Alessandro