runFromBindings ::
       Options
    -> OhuaM env result
    -> HS.HashSet Binding
    -> LoggingT IO (Either Error result)
runFromBindings opts f taken = runExceptT $ do
    s0 <- make =<< ((, , mempty) <$> initNameGen taken <*> make 0)
    fst <$> evalRWST (runOhuaM f) env s0
  where
    env = def & options .~ opts
runFromBindings ::
       Options
    -> OhuaM env result
    -> HS.HashSet Binding
    -> LoggingT IO (Either Error result)
runFromBindings opts f taken = runExceptT $ do
    s0 <- make =<< ((, , mempty) <$> initNameGen taken <*> make 0)
    fst <$> evalRWST (runOhuaM f) env s0
  where
    env = def & options .~ opts
runFromBindings opts f taken = runExceptT $ do
    s0 <- make =<< ((, , mempty) <$> initNameGen taken <*> make 0)
    fst <$> evalRWST (runOhuaM f) env s0
  where
    env = def & options .~ opts