История изменений
Исправление quasimoto, (текущая версия) :
Как ты это определишь в языке с инкрементальной компиляцией?
В лиспе символы, там оно по такому принципу работает:
int f() { return 1; }
int(*f_sym)() = f;
int g() { return f_sym(); }
int(*g_sym)() = g;
printf("%d\n", g_sym()); // => 1
f_sym = []() { return 2; };
printf("%d\n", g_sym()); // => 2
так что можно создать новый код, связать с каким-то символом, весь остальной код автоматически будет понимать уже новый код, так как завязан не на конкретные адреса, а на символы.
Исходная версия quasimoto, :
Как ты это определишь в языке с инкрементальной компиляцией?
В лиспе символы, там оно по такому принципу работает:
int f() { return 1; }
int(*f_sym)() = f;
int g() { return f_sym(); }
int(*g_sym)() = g;
printf("%d\n", g_sym()); // => 1
f_sym = []() { return 2; }; // alloc. new code
printf("%d\n", g_sym()); // => 2
// dealloc. new code
так что можно создать новый код, связать с каким-то символом, весь остальной код автоматически будет понимать уже новый код, так как завязан не на конкретные адреса, а на символы.