+def transform_lambda_expression(accumulators, expression):
+ # TODO This function feels hacky
+ if len(accumulators.lambda_number_list) == 0:
+ accumulators.lambda_number_list.append(0)
+ else:
+ accumulators.lambda_number_list.append(accumulators.lambda_number_list[-1] + 1)
+
+ name = '__lambda_{}'.format(accumulators.lambda_number_list[-1])
+
+ accumulators.function_definition_list.append(CFunctionDefinition(
+ name=name,
+ argument_name_list=expression.argument_name_list,
+ statement_list=tuple(transform_statement(accumulators, s) for s in expression.statement_list),
+ ))
+
+ return CLambdaExpression(name=name)
+
+