История изменений
Исправление eao197, (текущая версия) :
Поскольку конструктор SafeIdx не экспортирован, единственный способ создать SafeIdx — с помощью ф-ции checkIdx:
Я совсем не копенгаген в Haskell, но что будет, если x' после получения будет применен к другому экземпляру SafeArray того же типа?
Т.е. что-то вроде:
main = do
i<- getUserInput
let b = SafeArray ...
let a = SafeArray ... -- The same type as 'b'
x = a `at` i -- Type error
x' = case checkIdx a i of
Nothing -> ...
Just i' -> b `at` i' -- ???
?
Исходная версия eao197, :
Поскольку конструктор SafeIdx не экспортирован, единственный способ создать SafeIdx — с помощью ф-ции checkIdx:
Я совсем не копенгаген в Haskell, но что будет, если x' после получения будет применен к другому экземпляру SafeArray того же типа?
Т.е. что-то вроде:
main = do
i<- getUserInput
let b = SafeArray ...
let a = SafeArray ... -- The same type as 'b'
x = a `at` i -- Type error
x' = case checkIdx a i of
Nothing -> ...
Just i' -> b `at` i' -- Ok. Safe indexing with zero runtime overhead.
?