 :: (MonadWriter Output m, MonadIO m) => m Int
roll = do
  d <- liftIO $ randomRIO (1, 6)
  emit [OutDie d]
  return d

st
roll :: (MonadWriter Output m, MonadIO m) => m Int
roll = do
  d <- liftIO $ randomRIO (1, 6)
  emit [OutDie d]
  return d
roll = do
  d <- liftIO $ randomRIO (1, 6)
  emit [OutDie d]
  return d