Diving Into Functional Programming

26th Apr 2017

Diving Into Functional Programming

Outside of reading over the concepts of functional programming I have never had the opportunity to really dig deep and get to know the theories, patterns and quirks. There has been a lot of talk in the JavaScript community about using functional programming ideas but I've decided to put JavaScript to the side for the moment because, whilst it can be used very easily to do functional programming, it isn't a functional programming language. It's also easy to fall back into habits when something is very familiar.

So I'm using F# to learn how to do functional programming properly.

So far I've found Scott Wlaschin's website fsharpforfunandprofit.com an amazing resource for getting started. His Thinking Functionally series has helped me solidify many of the ideas in my mind.

I've also started to do some F# katas on codewars.com to test what is actually going in.

Here are a few things which have been really useful

These are the areas I want to get clearer in my mind

  • Designing functional composition and partial application
  • Monads, I kind of get what they are but still it's a bit hazy how to make the most of them when designing code
  • Structuring an application
  • Usage as a module

At some point I will be wanting to use these concepts with JavaScript and have found these resources:

  • Professor Frisby Introduces Composable Functional JavaScript - Egghead Course
  • Fable - F# to JS Compiler
  • Tom Harding's posts:
    • http://www.tomharding.me/2017/03/03/fantas-eel-and-specification/

    • http://www.tomharding.me/2017/03/08/fantas-eel-and-specification-2/

    • http://www.tomharding.me/2017/03/09/fantas-eel-and-specification-3/

    • http://www.tomharding.me/2017/04/09/fantas-eel-and-specification-3.5/

    • http://www.tomharding.me/2017/03/13/fantas-eel-and-specification-4/

    • http://www.tomharding.me/2017/03/21/fantas-eel-and-specification-5/

    • http://www.tomharding.me/2017/03/27/fantas-eel-and-specification-6/

    • http://www.tomharding.me/2017/04/03/fantas-eel-and-specification-7/

    • http://www.tomharding.me/2017/04/10/fantas-eel-and-specification-8/

    • http://www.tomharding.me/2017/04/17/fantas-eel-and-specification-9/

    • http://www.tomharding.me/2017/04/24/fantas-eel-and-specification-10/