sizeOf' f (TELet _ id _ p expr body)                = do
  let params = paramsAsData p
  let localDef = Local id f params
  let localEnv = addControlPoint localDef . addData params
  exprSize <- local localEnv $ sizeOf' localDef expr
  local (addData [(id, DataPos exprSize)]) $ sizeOf' f body
sizeOf' f (TELet _ id _ p expr body)                = do
  let params = paramsAsData p
  let localDef = Local id f params
  let localEnv = addControlPoint localDef . addData params
  exprSize <- local localEnv $ sizeOf' localDef expr
  local (addData [(id, DataPos exprSize)]) $ sizeOf' f body
sizeOf' f (TELet _ id _ p expr body)                = do
  let params = paramsAsData p
  let localDef = Local id f params
  let localEnv = addControlPoint localDef . addData params
  exprSize <- local localEnv $ sizeOf' localDef expr
  local (addData [(id, DataPos exprSize)]) $ sizeOf' f body