) и составьте функцию, чтобы получить более лаконичное:
лизую комбинаторный алгоритм оптимизации в Haskell:
Given an initial candidate solution, repeat until stopping criteria are met:
1. Determine possible moves
2. Evaluate possible moves
3. Choose a move
4. Make move, record new candidate solution, update search state
Я мог бы написать функции для шагов 1-4 и связать их вместе внутри рекурсивной функции для обработки цикла и передачи состояния от одной итерации к другой, но у меня есть смутное представление о том, что монады применимы.
Какой лучший способ выразить такую процедуру в Haskell?