Я хочу определить функцию
invert :: [Int] -> [Int]
, которая предполагает, что ее вход является перестановкой [0 .. (n-1)]
и возвращает обратное.Можно ли определить его, используя только списки и кортежи (без массивов), чтобы он работал в линейном времени?
Это в первую очередь вне академического интереса; в реальном коде я мог бы использовать Array
или STArray
или аналогичный.