projectCode :: [Lam.Binding Identity] -> IO ([Lam.BindingWithId CodeDbId], Projection)
projectCode code = do
  bindingsWithIds <- runCodeDbIdGen $ mapM (Lam.bindingWithId nextCodeDbId) code
  let projection = bindingsWithIdsProjection bindingsWithIds
  pure (bindingsWithIds, projection)
projectCode :: [Lam.Binding Identity] -> IO ([Lam.BindingWithId CodeDbId], Projection)
projectCode code = do
  bindingsWithIds <- runCodeDbIdGen $ mapM (Lam.bindingWithId nextCodeDbId) code
  let projection = bindingsWithIdsProjection bindingsWithIds
  pure (bindingsWithIds, projection)
projectCode code = do
  bindingsWithIds <- runCodeDbIdGen $ mapM (Lam.bindingWithId nextCodeDbId) code
  let projection = bindingsWithIdsProjection bindingsWithIds
  pure (bindingsWithIds, projection)