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.

Learn to think functionally

“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.

Useful examples

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.

Don't be scared

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.

Have fun!

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.

Getting started

If you are completely new to Scala, find out more about Scala and how it is used at scala-lang.org. To download and install Scala, read the installing and using Scala page to get started.

Next, before randomly dipping into the posts, you should read the "why use Scala?" page and then the whole "why use Scala" series, and then the "thinking functionally" series.

There is a page with some advice on learning Scala, and if you have problems trying to get your code to compile, the troubleshooting Scala page might be helpful.

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.