Когда использовать монады Haskell

Я реализую комбинаторный алгоритм оптимизации в 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?

20
задан zoo 18 August 2011 в 17:24
поделиться