LINUX.ORG.RU

История изменений

Исправление 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.

?