Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a parent promise?

Tags:

r

promise

pryr

In package pryr, there is a function called parent_promise.

I know what a promise is, but I'm not familiar with the term parent promise. Furthermore, I don't really understand the example in the documentation, perhaps because I don't know what I'm looking for.

library(pryr)
example(parent_promise)
# prnt_p> f <- function(x) g(x)
# prnt_p> g <- function(y) h(y)
# prnt_p> h <- function(z) parent_promise(z)
# prnt_p> h(x + 1)
# x + 1
# prnt_p> g(x + 1)
# x + 1
# prnt_p> f(x + 1)
# x + 1

To help me get a better understanding of the above example, can someone explain what a parent promise is, and if/how it differs from a regular promise?

like image 333
Rich Scriven Avatar asked Aug 27 '14 01:08

Rich Scriven


1 Answers

There's no special thing called a "parent promise." There are just promises. But a promise might point to another promise. The parent_promise function basically walks up the chain of promises to find the first non-promise.

So when you call f(x), that in turn calls g(y) with y (promise)-> x. Since you never evaluate y, that parameter is passed along as a promise to h(z) with z (promise)-> y. So

z (promise)-> y (promise)-> x (promise)-> x+1

So calling parent_promise(z) goes up the chain to find the first non-promise object which in each of these cases is the expression x+1

like image 109
MrFlick Avatar answered Oct 05 '22 06:10

MrFlick