Skip to content

Tips for avoiding errors in nimbleFunction programming and compilation (DSL)

Christopher Paciorek edited this page Sep 4, 2018 · 12 revisions

Chapters 11-15 of the NIMBLE manual describe how to program in NIMBLE: how to write nimbleFunctions using the NIMBLE language (NIMBLE DSL).

Writing nimbleFunction run code is similar to programming in R, but because nimbleFunctions are compiled to C++, there are some limitations on what can be done in run code.

Here we document some of the syntax that does NOT work in nimbleFunction run code and work-arounds in each case.

Syntax that doesn't work Alternative syntax to accomplish this
Use of distribution parameterizations other than those in Section 11.2.4 of the manual Manually reparameterize to one of the parameterizations in Section 11.2.4
Reverse indexing such as 2:1 Manually write a loop such as for(i in 1:L) { index[i] <- L+1-i }
Clone this wiki locally