How far can we take monad(ish) abstractions in Fortran? Is it possible to make it into something useful?