Am I correct that the reason Lazy is used in evaluation, is that evaluation returns in the strict M monad, hence returned values are always forced?
As I see M only does fresh var generation. What do you think about using de Bruijn indices and levels? In that case, would eval be pure in your setup, and then Lazy could be dropped?
Am I correct that the reason
Lazyis used in evaluation, is that evaluation returns in the strictMmonad, hence returned values are always forced?As I see
Monly does fresh var generation. What do you think about using de Bruijn indices and levels? In that case, would eval be pure in your setup, and thenLazycould be dropped?