<commit_before>(Nominal) Adapton in Rust
==========================

Based on this OCaml implementation: 
 https://github.com/plum-umd/adapton.ocaml

Status
------

 - Still learning how to develop in Rust.
   - Thinking about lifetimes for Nominal Adapton.
   - Thinking about other representation concerns, too.

 - Learning from projects on Cargo:
   - Basic Data structures: https://github.com/reem/adamantium
   - Laziness: https://github.com/reem/rust-lazy
   - Memoization: https://github.com/Inspiravetion/Memoirs

TODO: Short-term
-----------------

 - Implement lazy, memoized lists.
 - Implement mergesort.
 - Implement memoized sequences.
 - Implement memoized tries.

To simplify short-term goal, will only initially handle *pure input
structures*.  Do later: Imperative input changes.
<commit_msg>updated status and near-term plans<commit_after>(Nominal) Adapton in Rust
==========================

Based on this OCaml implementation: 
 https://github.com/plum-umd/adapton.ocaml

Development Activities
-----------------------

 - Building "outwards" from a basic, core interface.

   - The core library implements this interface.
     It will proceed in three baby steps (see below).

   - To run experiments, we need to implement user code.
     I will proceed by creating simple apps, as in our recent papers 
     (PLDI 2014, Nominal Adapton draft).

     I will also implement simple small-step evaluators, towards
     better understanding and illustrate AAM + IC via Adapton.


TODO: Core Library
-----------------
 - ~~ Basic articulation interface ~~

 - Language understanding: How do I .invoke an Invoke object?

 - Baby step 1: Lazy evaluation (simple thunks).
                [need .invoke, then done].

 - Baby step 2: Nominal/Classical caching, explicit eviction.
                Names cannot be "double-used", cells cannot change.
                Implements Bill Pugh's notion of IC, pure function caching.

 - Baby step 3: Bidirectional DCG structure structure, changeable input cells, 
                dirtying traversals, repair traversals.


TODO: Basic Data Structures and Algorithms
-------------------------------------------
 - ~~ Implement mergesort. ~~
 - ~~ Implement lazy, memoized lists. ~~
 - Implement memoized tries.
 - Implement memoized sequences.

TODO: Basic Incremental Evaluators 
-----------------------------------------------------------
 - Arithmetic expressions, with small-step expression trace
{'fraction_non_alphanumeric': 0.15538336052202284, 'fraction_numerical': 0.0028548123980424145, 'mean_word_length': 2.5396825396825395, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1285487', 'n_tokens_mistral': 657, 'n_tokens_neox': 609, 'n_words': 246}