matchCandidates :: (DefStore d) => d -> [[(MatchOp, MatchOp)]]
               -> IO (Either String MatchResult, [[(MatchOp, MatchOp)]])
matchCandidates _ [] = return (Left "matchCandidates: Out of candidates", [])
matchCandidates :: (DefStore d) => d -> [[(MatchOp, MatchOp)]]
               -> IO (Either String MatchResult, [[(MatchOp, MatchOp)]])
matchCandidates _ [] = return (Left "matchCandidates: Out of candidates", [])
matchCandidates _ [] = return (Left "matchCandidates: Out of candidates", [])