doWord w = do --checkUnify $ do
  popStack
  m <- psWords <$> get
  pushArg (W w)
  case w `M.lookup` m of
    Nothing -> mzero
    Just [x] -> x 
    Just x -> msum x
  popArg
  return ()
doWord w = do --checkUnify $ do
  popStack
  m <- psWords <$> get
  pushArg (W w)
  case w `M.lookup` m of
    Nothing -> mzero
    Just [x] -> x 
    Just x -> msum x
  popArg
  return ()
doWord w = do --checkUnify $ do
  popStack
  m <- psWords <$> get
  pushArg (W w)
  case w `M.lookup` m of
    Nothing -> mzero
    Just [x] -> x 
    Just x -> msum x
  popArg
  return ()