One more follow up question: if we always only use takeD 10000
(or similar) to inspect the resulting terms, then why not just add that number as an argument to the denote
function? What benefit does the guarded delay monad have over simple fuel-indexed functions?
I’m asking these questions now because I’m working on a definition of context-free languages which also require me to watch out for nontermination. I’m using a fuel-indexing approach now which seems to work fine, so I’d like to know of any potential future problems that I might face.