так понятно. но как ты аргументируешь чистоту, я так и не понял. ты вот написал там про детерминированность, но как твоя хорошо написанная чистая функция которая мутирует аргумент может быть детерминированной?
local state { a=10; b=10; aXb = 100 }
int pure-mutate(state){
a = state.a + 1 (zapomnili 11)
b = state.b + 1 (zapomnili 11)
mutate to state { a=a, b=b, aXb = a * b (itogo 121) }
… (some other thread mutated to state { … aXb = 200; }
return state.aXb * 2;
}
pure-mutate(state) returned 400 ( a doljon 242, wtf, karl? )
> (some other thread сохранение указателя на стейт - не круто. в данном примере - в стеке другого потока
Обсуждают сегодня