stan-dev / stanc3

The Stan transpiler (from Stan to C++ and beyond).
BSD 3-Clause "New" or "Revised" License
138 stars 44 forks source link

[FR] Bool data type? #1328

Open andrjohns opened 1 year ago

andrjohns commented 1 year ago

Would it be tricky/breaking to add support for a bool/boolean data type? All of the conditional/comparison operators require a boolean value, so users currently have to re-evaluate the condition at each call or rely on the implicit conversion from an int type.

It could make for cleaner syntax to be able to do something like:

data {
  real y_mean;
  bool use_log;
}
parameters {
  real y;
}
model {
  if (use_log) {
    y ~ lognormal(y_mean, 1);
  } else {
    y ~ normal(y_mean, 1);
  }
}
WardBrian commented 1 year ago

bool would essentially be syntactic sugar for int <lower=0, upper=1>, so I don't think this would be a breaking change.

Well, I guess reserving the keyword "bool" would be, but we have a policy for that. true and false are already reserved.