Как-то так:
return lambda (x: int): int = x * 2;
Или
lambda (x: int): int
cache y: int = 0, z: int = 1
begin
y++;
z *= 2;
printf("x = %d, y = %d, z = %d", x, y, z);
end
И в памяти оно разворачивается в что-то типа:
struct lambda_10023 {
struct cache {
int y,
int z
},
(*int) func(struct catche, int)
}
Это псевдокод, я не очень помню Си))
lambda