2 Includes
Stan allows one file to be included within another file using a syntax
similar to that from C++. For example, suppose the file
my-std-normal.stan
defines the standard normal log probability
density function (up to an additive constant).
functions {
real my_std_normal_lpdf(vector y) {
return -0.5 * y' * y;
}
}
Suppose we also have a file containing a Stan program with an include statement.
#include my-std-normal.stan
parameters {
real y;
}
model {
y ~ my_std_normal();
}
This Stan program behaves as if the contents of the file
my-std-normal.stan
replace the line with the #include
statement, behaving as if a single Stan program were provided.
functions {
real my_std_normal_lpdf(vector y) {
return -0.5 * y' * y;
}
}
parameters {
real y;
}
model {
y ~ my_std_normal();
}
There are no restrictions on where include statements may be placed within a file or what the contents are of the replaced file.
2.0.1 Space before includes
It is possible to use includes on a line non-initially. For example,
the previous example could’ve included space before the #
in the
include line:
#include my-std-normal.stan
parameters {
// ...
If there is initial space before an include, it will be discarded.
2.0.2 Comments after includes
It is also possible to include line-based comments after the include. For example, the previous example can be coded as:
Line comments are discarded when the entire line is replaced with the contents of the included file.