[Haskell] Преобразование массива
От: Аноним  
Дата: 14.05.09 06:24
Оценка:
Помогите пожалуйста придумать красивое решение для возникшей задачи. Сам пока только учусь, и ничего, что бы однозначно нравилось, что-то не придумывается. Мне хочется написать функцию со следующей сигнатурой:
transform :: (RandomGen g) => Array i e -> State g (Array i e)

Функция должна просто возвращать новый массив той же длины, элементы которого должны быть с формированы из соответствующих элементов исходного массива, но учитывая некоторый рандомизирующий фактор. И хочется мне это сделать не создавая промежуточных списков, а только лишь воспользовавшись amap'ом (хотя, возможно, какой-нибудь fusion и убрал бы промежуточные списки). Функция amap принимает первым элементом чистую функцию, и можно ли в принципе (честно) в эту функцию добавить рандомизацию, я, к сожалению, не знаю. Кажется что нет, но ведь могу ошибаться. Естественно должно обновляться состояние генератора, чтобы для всех элементов массива не использовалось одно и то же псевдослучайное число.
На самом деле, мои соображения по поводу того, как должна выглядеть подобная функция, могут быть ошибочными. То что кажется разумным мне, может таковым и не являться. Как бы решили эту задачу вы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.