ioref

Różnica między State, ST, IORef i MVar

Pracuję nad napisz sobie schemat w 48 godzin (jestem do około 85 godzin) i doszedłem do części o dodawanie zmiennych i przy ... LispVal)] jest myląca-dlaczego druga IORef? Co się zepsuje, jeśli zamiast tego napiszę type ENV = State [(String, LispVal)]?

Kiedy można używać IORef?

Jedna rzecz, która zawsze mnie myli, to czy to dobry czas, aby użyć IORef. Czy istnieją jakieś wytyczne, których należy przestrzegać przy podejmowaniu decyzji o użyciu IORef do zadania? Kiedy jest dobry czas, aby użyć Monad Stan nad IORef?