うーん……文法的には良いものだけど、これ意味論を考えると where は非正格評価の Haskell だからこそノーコストで行えるのであって、正格評価の言語でやると実行順がソースコード上滅茶苦茶になるとか実質的にローカル変数と機能は同じになるとかで、あまり嬉しくない気がする
* スコープが限られている
* 宣言を後回しにできる
の2点が嬉しいわけだけど、前者はブロック切ってローカル変数を作ることでどうにかできそうだし (えっ!?ブロックスコープで変数作れない言語ですか!?)、後者は「ローカル変数の使用が初期化よりも後に来る」というなかなかハードコアなソースになってしまう。しかもこれ任意の関数や式で多用するような構文だし……
where で与える別名の初期化には純粋で副作用が伴わない式しか使ってはならないとするならその辺りの問題は解消できそうな気もするけど……
制約としては constexpr は近いかもしれない