Dear readers, it's the start of a new UK fiscal year, and so I have decided to make some changes to this site. From today, I will be focusing on Scala instead of F#. Therefore, all pages on my old site fsharpforfunandprofit.com will now be redirected to this new site, scalaforfunandprofit.com.
You will notice that I have already started to make some minor changes to the text, but I will leave all the F# code samples untouched for the time being, so as not to cause any inconvenience.
Thank you for your understanding and patience during this transition. Sincerely, Scott W.
IMPORTANT UPDATE: See the bottom of this page.
This site will introduce you to Scala and show you ways that Scala can help in day-to-day development of mainstream commercial business software. On the way, I hope to open your mind to the joys of functional programming – it really is fun!
If you have never heard of Scala, it is a general purpose functional/hybrid programming language which is great for tackling almost any kind of software challenge. Scala is free and open source, and runs on Linux, Mac, Windows and more. Find out more at scala-lang.org.
“Thinking functionally” is critical to getting the most out of Scala, so I will spend a lot of time on getting the basics down, and I will generally avoid too much discussion of the hybrid and OO features.
The site will mostly focus on mainstream business problems, such as domain driven design, website development, data processing, business rules, and so on. In the examples I will try to use business concepts such as Customer, Product, and Order, rather than overly academic ones.
Scala can look very intimidating if you look at complex code without any background. In the beginning I will keep it very simple, and I have tried to anticipate the questions that a newcomer to functional programming concepts will have. If you work through the examples slowly (and in the right order) you should have no problem understanding everything.
Many people claim that learning to think functionally will "blow your mind". Well, it's true! Learning a completely new paradigm is exciting and stimulating. You may fall in love with programming again.
I will assume that you do not need instruction in the basics of programming and that you are familiar with Java, or a similar C-like language. It will also be helpful if you are familiar with the Java libraries.
On the other hand, I will not assume that you have a mathematical or computer science background. There will be no mathematical notation, and no mysterious concepts like "functor", "category theory" and "anamorphism". If you are already familiar with Haskell or ML, this is probably not the place for you!
Also, I will not attempt to cover highly technical or mathematical applications. Scala is an excellent tool for these domains, but it requires an approach that is different from business software.
Dear readers, This site was an April Fools and is now obsolete -- I will keep it up for a while though. I hope you enjoyed it!
If you like functional programming, please check out my (real) F# site: fsharpforfunandprofit.com.