Functional programming languages, tools and architectures