<commit_before>"Given a stream of tuples, return two streams. The
 first stream produces the first elements of the
 given tuples, and the second stream produces the
 remaining elements of the given tuples.
 
 Thus:
 
     tuples[i] == [unzip(tuples)[0][i], 
                  *unzip(tuples)[1][i]]"
shared [Iterable<Head,Absent>, Iterable<Tail,Absent>] 
unzip<Element,Head,Tail,Absent>
        (Iterable<Tuple<Element|Head,Head,Tail>,Absent> tuples)
        given Tail satisfies Element[]
        given Absent satisfies Null
        => [tuples.map((Tuple<Element|Head,Head,Tail> tuple) 
                        => tuple.first),
            tuples.map((Tuple<Element|Head,Head,Tail> tuple) 
                        => tuple.rest)];

"Given a stream of pairs, return two streams. The
 first stream produces the first elements of the
 given pairs, and the second stream produces the
 second elements of the given pairs.
 
 Thus:
 
     pairs[i] == [unzipPairs(pairs)[0][i], 
                  unzipPairs(pairs)[1][i]]"
native shared [Iterable<First,Absent>, Iterable<Second,Absent>] 
unzipPairs<First,Second,Absent>
        (Iterable<[First,Second],Absent> pairs)
        given Absent satisfies Null
        => [pairs.map(([First,Second] pair) => pair[0]),
            pairs.map(([First,Second] pair) => pair[1])];

"Given a stream of entries, return two streams. The
 first stream produces the keys of the given entries, 
 and the second stream produces the items of the given 
 entries.
 
 Thus:
 
     entries[i] == unzipEntries(entries)[0][i] <commit_msg>compile unzipPairs<commit_after>"Given a stream of tuples, return two streams. The
 first stream produces the first elements of the
 given tuples, and the second stream produces the
 remaining elements of the given tuples.
 
 Thus:
 
     tuples[i] == [unzip(tuples)[0][i], 
                  *unzip(tuples)[1][i]]"
shared [Iterable<Head,Absent>, Iterable<Tail,Absent>] 
unzip<Element,Head,Tail,Absent>
        (Iterable<Tuple<Element|Head,Head,Tail>,Absent> tuples)
        given Tail satisfies Element[]
        given Absent satisfies Null
        => [tuples.map((Tuple<Element|Head,Head,Tail> tuple) 
                        => tuple.first),
            tuples.map((Tuple<Element|Head,Head,Tail> tuple) 
                        => tuple.rest)];

"Given a stream of pairs, return two streams. The
 first stream produces the first elements of the
 given pairs, and the second stream produces the
 second elements of the given pairs.
 
 Thus:
 
     pairs[i] == [unzipPairs(pairs)[0][i], 
                  unzipPairs(pairs)[1][i]]"
shared [Iterable<First,Absent>, Iterable<Second,Absent>] 
unzipPairs<First,Second,Absent>
        (Iterable<[First,Second],Absent> pairs)
        given Absent satisfies Null
        => [pairs.map(([First,Second] pair) => pair[0]),
            pairs.map(([First,Second] pair) => pair[1])];

"Given a stream of entries, return two streams. The
 first stream produces the keys of the given entries, 
 and the second stream produces the items of the given 
 entries.
 
 Thus:
 
     entries[i] == unzipEntries(entries)[0][i] 
{'fraction_non_alphanumeric': 0.11639871382636656, 'fraction_numerical': 0.0045016077170418, 'mean_word_length': 3.1646586345381524, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 37, '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}}
{'dir': 'git-commits-cleaned', 'id': '7056048', 'n_tokens_mistral': 959, 'n_tokens_neox': 906, 'n_words': 278}