I think that the whole point of extensible records is to change the type on appending, to provide more safety at compile time than (hash) maps. If you don't want to use lenses (zoom) to combine different state monads, I guess a map is the best option.
Kind regards,
Marcin Mrotek
Thanks all of you.
So there is no trick that can make extensible records O(1) for field access, like the native haskell records?. I didn´t know that all the extensible records have O(n) or O(log n) at most.
That is not better than my State monad with a Data.Map. It is not possible to use HList-like records like the one that Adam mentioned since the type signature must not change when a new field is added.