有沒有什麼辦法可以在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 2012-03-17 18:57:44
使用[習慣](http://hasp.cs.pdx.edu/habit-report-Nov2010.pdf)(PDF)Ix類型獲得界限的靜態保證。如果您將此工作移植到Haskell,則可獲得獎勵積分。 – 2012-03-17 19:06:58
有一種方法,但實際上太不方便了。有關這方面的更多信息,請嘗試在網上搜索「類型號碼haskell」。 – 2012-03-17 20:25:18