<commit_before>KUTILS

This is a collection of Kyle's utilities. They're things that I find
generally useful when writing programs.

There's a few groups of tools:

* Functions from On Lisp
* Functions and macros from Let Over Lambda
* Hash-table based functions
* Miscellaneous

On Lisp tools
=============

* mkstr
* symb
* group
* flatten
* compose

Let Over Lambda
===============

* defmacro!

Hash-table
==========

* hashkeys
* sethash
* hash-table-to-alist
* alist-to-hash-table

The function `enable-hashtable-reader` will activate a reader macro
for hash-tables using `:test #'equal`. This syntax looks like

    #{ k v ... }#

For example:

    CL-USER> (kutils:hashkeys (kutils:alist-to-hashtable (kutils:hashtable-to-alist #{:a :b :c :d}#)))
    (:A :C)
<commit_msg>Bring README up to date.<commit_after>KUTILS

This is a collection of Kyle's utilities. They're things that I find
generally useful when writing programs.

There's a few groups of tools:

* Functions from On Lisp
* Functions and macros from Let Over Lambda
* Hash-table based functions
* Miscellaneous

On Lisp tools
=============

* mkstr
* symb
* group
* flatten
* compose

Let Over Lambda
===============

* defmacro!

Hash-table
==========

* hashkeys
* sethash
* hash-table-to-alist
* alist-to-hash-table

The function `enable-hashtable-reader` will activate a reader macro
for hash-tables using `:test #'equal`. This syntax looks like

    #{ k v ... }#

For example:

    CL-USER> (kutils:hashkeys (kutils:alist-to-hashtable (kutils:hashtable-to-alist #{:a :b :c :d}#)))
    (:A :C)

Miscellanea
===========

* interpose
* build-list
* partial
* macroexpand-n
* mksymb
* mkkw
* defclass!
* defconstructor
{'fraction_non_alphanumeric': 0.15088757396449703, 'fraction_numerical': 0.0, 'mean_word_length': 4.04776119402985, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, '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': '162232', 'n_tokens_mistral': 602, 'n_tokens_neox': 567, 'n_words': 187}