Very recently on Lambda the Ultimate , they had a really good post describing Soccer-Fun, a way to teach functional programming (pdf) . The premise is very simple and is described as the following: ...a domain specific language for simulating football...