"you could almost write a book on [colons in ranges] alone" floating-point ranges are hard:
miniblog.
Related Posts
Functions can have pre/postconditions specifying assumptions and legal ranges for inputs. What's the equivalent for pretrained ML models?
https://gradio.app/blog/missing-contracts
Interesting @lambda_conf talk showing how Dialyzer ('discrepancy analyzer') offers gradual typing for Erlang and Elixir: https://youtu.be/FXCMiQWnWu0
It's a neat type system: it uses 'success typing', (it assumes you're correct) and exotic features like ranges and non-empty lists!