Cpp.DSLA set of operators and helpers to make the OCaml code look more like the resultant C++
Some operators to make streams and method calls look more like the resultant C++
include module type of struct include Exprs endval method_call : expr -> identifier -> type_ list -> expr list -> exprCall a method on object, wrapping it in parentheses if it is not a variable
val to_var : identifier -> exprval literal_string : string -> exprTurn an OCaml string into a quoted and escaped C++ string
val fun_call : identifier -> expr list -> exprval templated_fun_call : identifier -> type_ list -> expr list -> exprval quiet_NaN : exprHelper for std::numeric_limits<double>::quiet_NaN()
val int_min : exprHelper for std::numeric_limits<int>::min()
val (.@!()) : expr -> identifier -> exprMethod call: Call a no-argument method
E.g. foo.bar()
val (.@?()) : expr -> (identifier * expr list) -> exprMethod call: Call the named method with args
E.g. foo.bar(A1,...An)
val (.@<>()) : expr -> (identifier * type_ list * expr list) -> exprMethod call: Call the named method with template types and args
E.g. foo.bar<T1,...,Tn>(A1,...An)
val (|::!) : type_ -> identifier -> exprStatic method call: Call the named method with no arguments.
E.g. Foo::bar()
val (|::?) : type_ -> (identifier * expr list) -> exprStatic method call: Call the named method with args
E.g. Foo::bar(A1,...An)
val (|::<>) : type_ -> (identifier * type_ list * expr list) -> exprStatic method call: Call the named method with template types and args
E.g. Foo::bar<T1,...,Tn>(A1,...An)
include module type of struct include Stmts endWrap the list of statements in a block if it isn't a singleton block already
Set up the try/catch logic for throwing an exception with its location set to the Stan program location.
val fori : identifier -> expr -> expr -> stmt -> stmtval unused : identifier -> stmt listSuppress warnings for a variable which may not be used.
val (:=) : identifier -> expr -> stmtShorthand for assignment