How far can we take monad(ish) abstractions in Fortran?