20.8 Summary of function types
Functions may have a void or non-void return type and they may or may
not have one of the special suffixes, _lpdf
, _lpmf
,
_lp
, or _rng
.
Void vs. non-void return
Only functions declared to return void
may be used as
statements. These are also the only functions that use return
statements with no arguments.
Only functions declared to return non-void
values may be used
as expressions. These functions require return
statements with
arguments of a type that matches the declared return type.
Suffixed or non-suffixed
Only functions ending in _lpmf
or _lpdf
and with
return type real
may be used as probability functions in
sampling statements.
Only functions ending in _lp
may access the log probability
accumulator through sampling statements or target +=
statements. Such functions may only be used in the transformed
parameters or model blocks.
Only functions ending in _rng
may access the built-in
pseudo-random number generators. Such functions may only be used in
the generated quantities block or transformed data block, or in the
bodies of other user-defined functions ending in _rng
.