Массивы с жесткой переменной

Ну, я делал проблему, в которой у функции, которую я использовал, была жесткая переменная. У меня была идея использовать массивы для этой проблемы. Поэтому я подумал об использовании массивов с той же жесткой переменной, что и у создаваемой мной функции, но я понятия не имею, как создать массив с жесткой переменной. Я попробовал следующее, но безрезультатно:

rearrange ::  [Int] -> [a] -> [a]

rearrange l la = elems (f 1 posarr)    
  where
    b = length l
    listarr :: Array Int Int
    listarr = listArray (1,b) l
    arra :: Array Int  c
    arra = listArray (1,b) la
    posarr :: Array Int  c
    posarr = listArray (1,b) la
    f i posarr
      | (b < i) = posarr
      | otherwise = f (i+1) (posarr // [(listarr!i,arra!i)] )

Ошибка, которую я получаю, имеет жесткую переменную. Как это можно исправить? Пожалуйста, дайте представление о том, как создать массивы с жесткими переменными, такими как a, в следующей функции, которую я использовал

Ответы на вопрос(2)

Ваш ответ на вопрос