Some circular function definitions are valid as illustrated in https://observablehq.com/@vramakin/valid-cycles but Observable always throws an error when it sees a circular definition. This prevents valid mutually recursive functions from being defined. So, can the circular definition check be disabled for function definitions ? I understand this is a rarely used feature; it will be nice to have it though.
it will be nice to have it though
Do you have a concrete/practical case where you have wanted this?
I was trying to use mutual recursion for a backtracking algorithm. After refactoring I realise the code reads better without mutual recursion. I’ll post here if I find more concrete cases.
FYI, the backtracking algorithm was something like this -
function solve(inp, op):
if(deadEnd) return stepBack(inp,op)
else if(goodEnd)
accumulate(op)
return stepBack(inp,op)
else return solve(next(ip),op)
function stepBack(inp, op):
if(backToStart) return op
else return solve(prev(inp),prev(op))