Транзакционная память и backtracking

Во многих задачах требуется модифицировать какую-то структуру, посмотреть что получилось, и, если не понравится, откатить все изменения.
Но транзакционная память делает почти то же самое. Ее можно слегка модифицировать, позволив при попытке завершения транзакции сравнить свою метрику с метриками других ожидающих завершения транзакций и выполнить только самую удачную.
Известны ли попытки так ее использовать?
По моему этот подход мог бы сделать более эффективными языки типа Prolog или LIFE.