module Control.Search.Combinator.Failure (failure) where import Control.Search.Language import Control.Search.GeneratorInfo import Control.Search.Generator import Control.Monatron.Monatron hiding (Abort, L, state, cont) import Control.Monatron.IdT failLoop uid _super = commentEval $ Eval { structs = ([],[]) , treeState_ = [] , evalState_ = [] , pushLeftH = \_ -> return Skip , pushRightH = \_ -> return Skip , nextSameH = \_ -> return Skip , nextDiffH = \_ -> return Skip , bodyH = \i -> cachedAbort i , addH = \_ -> return Skip , failH = \i -> cachedAbort i , returnH = \i -> cachedAbort i -- , continue = \_ -> return true , tryH = \i -> cachedAbort i , startTryH = \i -> cachedAbort i , tryLH = \_ -> return Skip , intArraysE = [] , intVarsE = [] , boolArraysE = [] , deleteH = \i -> cachedAbort i , initH = \_ -> return $ {- DebugOutput $ "fail" ++ show uid >>> -} Skip , toString = "fail" ++ show uid , canBranch = return False , complete = const $ return false } failure :: Search failure = Search { mkeval = \super -> get >>= \uid -> return (failLoop uid super) , runsearch = runIdT }