Habiendo mónadas, ¿quién quiere callbacks?

Nunca me he visto en la tesitura de tener que usar callbacks porque no son mi guerra. Pero por lo que he oído de la gente que sabe mucho más que yo, son uno de esos infiernos de los que hay que huir con el mismo pavor que de los fors, los ifs, los elses (¡argggg! ¡he escrito else!) y los whiles.

Una pequeña maravilla teórica que me ha hecho replantearme la absoluta inutilidad de aquello que estudié en Álgebra III (funtores y demás) son las mónadas.

Y aunque

  • haya discusión sobre si los futuros son o no son mónadas y
  • en R no exista un flatmap propiamente dicho,

inspirado por todo lo anterior, el otro día escribí este pequeño bloque de código que, aun siendo mío, me maravilla:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
library(magrittr)
library(future)

query.children <- function(x){
  future({
    tmp <- value(x)
    Sys.sleep(2)   # simulate waiting for resource
    tmp + 1
  })
}

query.node <- function(x){
  future({
    Sys.sleep(2)   # simulate waiting for resource
    x
  })
}

res <- query.node(1) %>% query.children %>% query.children

Ahora, en serio, ¿quién quiere callbacks?