{'fraction_non_alphanumeric': 0.017875920084121977, 'fraction_numerical': 0.0, 'mean_word_length': 5.476190476190476, '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}}
A Practical Approach to Structure Reuse of Arrays in Single Assignment Languages

Array updates in single assignment languages generally require some copying of the array, and thus tend to be more expensive than in imperative languages. As a result, programs in single assignment languages sometimes suffer from a performance handicap compared to those in imperative languages. Traditional attempts to address this problem have typically involved either complex compile-time analyses, which tend to be slow and fragile; or new language constructs, which do not always interface with already existing code. In this paper, we propose a new approach to this problem, based on a simple and straightforward program transformation, that we believe addresses the shortcomings of both of these approaches: it is easy to understand, efficiently implemented, does not require new language constructs, and yet is applicable to most commonly encountered programs.