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

Это вопрос Haskell, но меня также интересуют ответы на другие языки. Есть ли способ автоматически преобразовать чисто функциональный код, написанный для обработки списков или неизменяемых массивов, без каких-либо деструктивных обновлений, в код, который для повышения эффективности использует изменяемые массивы?

В Haskell сгенерированный код будет запускаться либо в Монада ST (в этом случае вся она будет обернута в runST или runSTArray ) или в монаду IO , я полагаю.

I ' m больше всего интересуют общие решения, которые работают для любого типа элемента.

Я думал, что видел это раньше, но не могу вспомнить где. Если его еще нет, мне было бы интересно его создать.

5
задан Robin Green 22 May 2011 в 14:29
поделиться