
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