I am working on a system to induce recursive functional programs from
examples, e.g. 'learn' the reverse function from
rev [] = []
rev [a] = [a]
rev [a,b] = [b,a]
rev [a,b,c] = [c,b,a]
...
Although I use analytical methods to reduce search to a minimum, I have
to handle a huge search space and traverse it relying on heuristics.
For details see our project site
http://www.cogsys.wiai.uni-bamberg.de/effalip/
where you can find a prototype of our system (however implemented in
MAUDE and not in Haskell).
To improve these heuristics I thought about intervening the search
during testing. So set some kind of breakpoints where to decide which
part of the search space to explore next. This is were your monad might
be useful.
However I just started to dip into this whole Monad and MonadT universe,
so any kind of suggestions are very much appreciated.
Martin