Functional programming for modern Fortran
