Having a bit of fun re-implementing a normalisation-by-evaluation base elaborator using arena allocation for terms. Seems to work well, and doesn't result in much weirdness with lifetimes! Only end up needing to use reference counting in values.
Conversation
Still not sure how best to implement my environments as I need them to be persistent. I've used `im::Vector` lib.rs/crates/im in the past, but it seems a tad chonky (size wise) to store in values… maybe I should just go with linked lists?
2
You could try the Vector in rpds, it looks a little leaner in terms of memory: docs.rs/rpds/0.9.0/rpd
1
1
ah neat! seems to be behind a pointer which is nice.
2
I really love `im` - lots of really great engineering work behind it… but yeah, the representation of `im::Vector` just a bit _too_ intrusive for this use case, alas! 😅

