Tue May 14 08:54:00 EDT 2019


So I have a language form and a prettyprinter.  Next is to define the
operations, and define some folds.

The next organizational step is to define a monad-parameterized
language such that creating of terms would be easier, and use it to
build a prettyprinter.

EDIT: Do a concrete version of this first.  E.g.:

test_val =
  Program $
  [loop' i [loop' j [let' (c i j) (a i j) (b i j)]],
   loop' i [loop' j [let' (d i j) (a i j) (c i j)]]]
  where [a,b,c,d] = map a2 ["A","B","C","D"]

This should expose some more concise representation even.