Arrays mit starren Variablen

Nun, ich hatte ein Problem damit, in welcher Funktion ich eine starre Variable verwendet habe. Ich hatte die Idee, Arrays für dieses Problem zu verwenden. Daher habe ich überlegt, Arrays mit derselben starren Variablen wie die von mir erstellte Funktion zu verwenden, aber ich habe keine Ahnung, wie ich ein Array mit einer starren Variablen erstellen soll. Ich habe folgendes probiert, aber ohne Wirkung:

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)] )

Der Fehler, den ich bekomme, ist eine starre Variable. Was ist die mögliche Lösung dafür? Bitte geben Sie die Idee, wie Sie Arrays mit starren Variablen wie in der folgenden Funktion erstellen, die ich verwendet habe