gleam-lang/gleam

Optimise decision tree for bit arrays

Open

#4524 opened on Apr 29, 2025

View on GitHub
 (9 comments) (2 reactions) (0 assignees)Rust (21,417 stars) (960 forks)batch import
help wanted

Description

Right now when generating code for bit arrays we might end up doing something like this:

if (size > n) {
  if (size === n + 10) {
    // ...
  } else {
    // body_1
  }
} else {
  // body_1
}

If all else branches have the same body it would be really nice to make the tree shorter and skip the first check entirely:

if (size === n + 10) {
  // ...
} else {
  // body_1
}

This might be quite challenging and could require reading more on how to reduce the tree size: this could be a very good resource for that https://user.it.uu.se/~kostis/Papers/JFP_06.pdf

Contributor guide