на вики написано: Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы[1] (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения (самомодифицирующийся код).
получается, что монада IO - метапрограммирование