Haskellアレイで静的検査を行う方法はありますか?のは、このコードを見てみましょう:Haskellアレイの静的境界チェック
import Data.Array
let a = listArray (0, 10) [-3.969683028665376e+01, 2.209460984245205e+02, -2.759285104469687e+02, 1.383577518672690e+02, -3.066479806614716e+01, 2.506628277459239e+00]
(0, 10)
は本当に(0, 5)
する必要がありますが、コンパイラは、コードを受け付けます。このエラーは、コンパイル時に検出される可能性があるにもかかわらず、実行時にのみ検出されます。
おそらく、コンパイラが無条件の 'error'(または何でも)呼び出しに達するために多くのインライン化と定数フォールディングを行う場合、* ** **このケースでは*検出される可能性があります。ほとんどの重要なプログラムでは、少なくとも合理的な努力では検出できません。そして、この厄介な停止問題があります... – delnan
[習慣](http://hasp.cs.pdx.edu/habit-report-Nov2010.pdf)を使用してください(PDF)Ix型は、境界の静的な保証を取得します。あなたがこの作品をHaskellに移植すると、ボーナスポイントが得られます。 –
方法がありますが、実用的にはあまりにも不便です。これについてもっと詳しく知りたい場合は、Webで「タイプレベル番号haskell」を検索してみてください。 –