Преобразование списка в `IO (IOArray Int a)` в Haskell - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужно написать функцию, которая принимает список a и возвращает IO (IOArray Int a)

listToArray :: [a] -> IO (IOArray Int a)

Мне нужна помощь, чтобы начать работу с IO массивами. Я создаю новый с помощью newListArray, но затем кажется, что мне нужно зафиксировать определенный c тип, и моя функция должна работать с любым типом a.

Спасибо за помощь!

1 Ответ

2 голосов
/ 27 февраля 2020

Если вы хотите работать с любым типом, вы можете взглянуть на сигнатуру этого типа

newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e) 

, где m равно IO, a равно IOArray и i is Int.

Для этого требуется начальный и конечный индексы массива. Подробно вы можете увидеть здесь: http://hackage.haskell.org/package/array-0.5.4.0/docs/Data-Array-MArray.html#v: newListArray

...