library("future")
library("listenv")
## IMPORTANT:
## 1. The below usage of lazy futures will only work when they are
## all evaluated in the same process.
## 2. We disable the capturing of standard output (stdout=NA) to avoid
## 'sink stack is full' errors
## 3. We disable the capturing of most conditions (condition="error") to
## avoid stacking up too many conditions
oplan <- plan(sequential)
## Defines the first 100 Fibonacci numbers
## (0, 1, 1, 2, 3, 5, 8, ...)
## but calculate only the ones need when
## a number is actually requested.
x <- listenv()
x[[1]] <- 0
x[[2]] <- 1
for (i in 3:100) {
x[[i]] %<-% { x[[i - 2]] + x[[i - 1]] } %lazy% TRUE %stdout% NA %conditions% "error"
}
## At this point nothing has been calculated,
## because lazy evaluation is in place.
## Get the 7:th Fibonnaci numbers (should be 8)
print(x[[7]])
## At this point x[1:7] have been calculated,
## but nothing beyond.
## Let's get the 50:th number.
print(x[[50]])
## Reset plan
plan(oplan)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.