{'fraction_non_alphanumeric': 0.01911667765326302, 'fraction_numerical': 0.0, 'mean_word_length': 5.657894736842105, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
If-then-else as a concurrency inhibitor in eager beaver evaluation of recursive programs

Programs described via recursive equations provide many opportunities for concurrent computation. For example, a machine may choose to concurrently initiate the evaluation of all subexpressions within a given expression. This “eager beaver” evaluation strategy has been a highly touted avenue for introducing massive parallelism into computations. However, machines following a strict eager beaver policy will not be acceptable in applications such as process control where certain portions of computations must follow an explicit sequence. In addition, eager beaver evaluation can in some circumstances waste resources on evaluation of expressions that turn out to be irrelevant to the overall goal of a computation. Therefore, programmers need operators for specifying the order of evaluation of subexpressions within a recursive program.
 We contend that a sequential form of the if-then-else function and a generalization to encompass nondeterminacy may be used as an elegant mechanism for sequencing computations within an eager beaver environment. We illustrate the use of if-then-else for specifying computational sequences by describing three computations: a process control algorithm (the dining philosophers), a nondeterministic function (AMB), and three alternative algorithms for minimax tree search. Finally we discuss the performance of a simulated, eager beaver multiprocessor as it carries out these algorithms.