The word "function" in "functional programming" refers to mathematical concept of a function, but in this talk, I will pretend that that's not the case. Imagine that functional programming was instead inspired by functionalist architecture and the word "function" referred to the modernist design principle that "form follows function". How would this perspective transform our thinking about programming?
Using a number of practical F# examples, I will try to convince you that "function" in the design sense is already more useful for understanding what makes functional programming great than "function" in the mathematical sense.
Along the way, I will go through a number of interesting language features and libraries available in F# that have close, but not quite equivalent cousins in Scala. We will look at the design principles behind "type providers" which provide an easy way to integrate external data sources into the language; we will look at ""asynchronous workflows"" which is the F# way for writing non-blocking computations and I will reflect on the cautious F# approach to meta-programming.
I might not be able to retroactively change what "functional programming" means in just one talk, but I will try nevertheless!
Tomas is a computer scientist and open-source developer. He is a Visiting Researcher at the Alan Turing Institute working on tools for open data-driven storytelling (http://thegamma.net). He wrote a popular book called "Real-World Functional Programming" and is a lead developer of several F# open-source libraries. He is a partner at fsharpWorks (http://fsharpworks.com) where he provides trainings and consulting services. Tomas' PhD thesis at the University of Cambridge introduced coeffects – a theoretical basis for context-aware programming – but his most recent writings also includes three essays try to understand programming through the perspective of philosophy of science.