(term)
| 14 | } |
| 15 | |
| 16 | export function termToString(term) { |
| 17 | if (!term) return '∅'; |
| 18 | if (term.type==='num') return String(term.value); |
| 19 | if (term.type==='atom') return term.name; |
| 20 | if (term.type==='var') return term.name; |
| 21 | if (term.type==='list') { |
| 22 | const base = term.items.map(termToString).join(', '); |
| 23 | const tail = term.tail ? ` | ${termToString(term.tail)}` : ''; |
| 24 | return `[${base}${tail}]`; |
| 25 | } |
| 26 | if (term.type==='expr') return `(${termToString(term.left)} ${term.op} ${termToString(term.right)})`; |
| 27 | if (term.type==='compound') return `${term.f}(${term.args.map(termToString).join(', ')})`; |
| 28 | return ''; |
| 29 | } |
| 30 | |
| 31 | export function renameVars(clause, counter = { current: 0 }) { |
| 32 | const map = {}; |
no outgoing calls
no test coverage detected