Journal of the ACM (JACM)
Journal of the ACM (JACM)
New Programming Languages for Artificial Intelligence Research
ACM Computing Surveys (CSUR)
Two-level control structure for nondeterministic programming
Communications of the ACM
Backtrack programming techniques
Communications of the ACM
Control structure aptness: A case study using top-down parsing
ICSE '78 Proceedings of the 3rd international conference on Software engineering
A procedure mechanism for backtrack programming
ACM '76 Proceedings of the 1976 annual conference
An implementation of backtracking for programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Language facilities for programmable backtracking
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Control Separation in programming languages
ACM '77 Proceedings of the 1977 annual conference
Simula Begin
Magma2: a language oriented toward experiments in control
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
ACM Transactions on Programming Languages and Systems (TOPLAS)
Concurrent applicative implementations of nondeterministic algorithms
Computer Languages
Hi-index | 0.00 |
Backtracking is a powerful conceptual and practical programming language control structure. However, its application in general has been limited to global control over recursive programs. In this paper we explore the coherence and utility of applying backtracking in a more general control setting, namely, block-structured coroutines. The following criteria are proposed for such a control combination to be judged successful: (i) retention of each control form's individual semantics; (ii) coherent semantics for each legal application of the combination; (iii) nonpreeminence of either control form, and (iv) facilitation of genuinely novel programming effects. The attainability of these criteria is assessed, with the aid of an informal language design and three illustrative applications: (i) a dual tree walk program using coroutine-managed backtracking subsystems; (ii) a context-free language intersection tester using bilevel hierarchical backtracking, and (iii) an optimizing computer job scheduler using backtracking in a simulation language context. Full programs are given for each example, phrased in a Pascal extension offering both coroutines and backtracking (expressed through nondeterministic control).