{'fraction_non_alphanumeric': 0.02841530054644809, 'fraction_numerical': 0.006557377049180328, 'mean_word_length': 4.909677419354839, '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}}
Backtracking in MLISP2: an efficient backtracking method for LISP

An efficient backtracking method for LISP, used in the MLISP2 language, is described. The method is optimal in the following senses: (1) Only necessary state information is saved. The backtracking system routines are sufficiently efficient to require less than ten percent of the execution time of typical jobs. (2) Most common operations -- fetching/storing the value of a variable or the property of an atom, function entry/exit -- take no longer with backtracking than without it. This is achieved by not changing the way values are stored. (3) If backtracking is not used, an insignificant overhead is involved in maintaining the backtracking capability. 
 
The MLISP2 algorithm and philosophy are briefly contrasted with those of several existing backtracking systems, with historical comments on the development of the theory of backtracking.