Rob Rix
|
05fa90ef84
|
Generalize the Cache type over the term type.
|
2019-07-29 11:58:02 -04:00 |
|
Rob Rix
|
7b6b6a4259
|
Generalize convergeTerm over the address type.
|
2019-07-29 11:54:57 -04:00 |
|
Rob Rix
|
56984fa7a6
|
Define Cache as a newtype.
|
2019-07-29 11:52:48 -04:00 |
|
Rob Rix
|
fcf654032c
|
Rename the name parameter to address.
|
2019-07-29 11:49:16 -04:00 |
|
Rob Rix
|
3119c222cb
|
Derive the Eq, Ord, & Show instances for Ann.
|
2019-07-29 11:29:47 -04:00 |
|
Rob Rix
|
5ec40693c3
|
Generalize the various example programs to arbitrary carriers for Core.
|
2019-07-29 11:28:30 -04:00 |
|
Rob Rix
|
604f1d97b7
|
Generalize the generators to arbitrary carriers for Core.
|
2019-07-29 11:24:31 -04:00 |
|
Rob Rix
|
4fdef93d72
|
Generalize the parser to arbitrary carriers for Core.
|
2019-07-29 11:24:22 -04:00 |
|
Rob Rix
|
e2db378be6
|
Fix the tests.
|
2019-07-29 11:18:19 -04:00 |
|
Rob Rix
|
e9b21f6ebf
|
Generate terms capable of annotation in the parser.
|
2019-07-29 11:18:15 -04:00 |
|
Rob Rix
|
01f1176348
|
Split out an Ann datatype representing locations.
|
2019-07-29 11:12:06 -04:00 |
|
Rob Rix
|
99a4f8ed5a
|
Write an empty scope graph into the heap during abstraction.
|
2019-07-26 15:45:52 -04:00 |
|
Rob Rix
|
16b1442b4b
|
Simplify deref slightly.
|
2019-07-26 15:35:43 -04:00 |
|
Rob Rix
|
0c106865f7
|
Record where names were bound.
|
2019-07-26 15:19:39 -04:00 |
|
Rob Rix
|
09f2362cd2
|
Abstract closures to their graphs.
|
2019-07-26 15:13:43 -04:00 |
|
Rob Rix
|
cb5b0fb2c4
|
Don’t allocate a pointless heap cell.
|
2019-07-25 13:28:02 -04:00 |
|
Rob Rix
|
b8f7bb06db
|
Don’t provide a current FrameId.
|
2019-07-25 13:11:07 -04:00 |
|
Rob Rix
|
3654aac2c8
|
🔥 the parent addr from the import & scope graph analyses.
|
2019-07-25 13:09:16 -04:00 |
|
Rob Rix
|
53e08b38ba
|
🔥 the specialization of String in the scope graph.
|
2019-07-25 13:03:05 -04:00 |
|
Rob Rix
|
f6cd84eba7
|
Merge branch 'sequence-values-in-the-abstract-domain' into scope-graphs
|
2019-07-25 12:57:07 -04:00 |
|
Rob Rix
|
0f34dcec45
|
Sequence values in the abstract domain.
|
2019-07-25 12:33:33 -04:00 |
|
Rob Rix
|
cd950fd6ec
|
Derive a Semigroup instance for Term Monotype a.
|
2019-07-25 12:33:13 -04:00 |
|
Rob Rix
|
7d9100f816
|
Derive a Semigroup instance for Concrete.
|
2019-07-25 12:33:00 -04:00 |
|
Rob Rix
|
fde3424c13
|
Dedent all the Analysis fields.
|
2019-07-25 12:32:47 -04:00 |
|
Rob Rix
|
057a4f8b5a
|
Copy in the import graph definition.
|
2019-07-25 09:31:36 -04:00 |
|
Rob Rix
|
5a40e01ff1
|
Derive Eq, Ord, & Show instances for Entry.
|
2019-07-25 09:30:15 -04:00 |
|
Rob Rix
|
8c59f9dc42
|
Only import the one symbol from Data.Text.
|
2019-07-25 09:30:02 -04:00 |
|
Rob Rix
|
455990dbc2
|
Change entrySymbol’s type to Text.
|
2019-07-24 08:07:35 -04:00 |
|
Rob Rix
|
a0bf65f43b
|
Move Edge into Concrete.
|
2019-07-23 16:11:04 -04:00 |
|
Rob Rix
|
7c24672921
|
Parse whitespace following string literals.
|
2019-07-23 15:53:18 -04:00 |
|
Rob Rix
|
41a31d1873
|
Simplify the projection rule.
|
2019-07-23 15:49:22 -04:00 |
|
Rob Rix
|
15430badec
|
Alignment.
|
2019-07-23 15:44:02 -04:00 |
|
Rob Rix
|
0254bc9895
|
Parse more escape sequences.
|
2019-07-23 15:43:25 -04:00 |
|
Rob Rix
|
f10cbb21b3
|
Generate string literals.
|
2019-07-23 15:43:11 -04:00 |
|
Rob Rix
|
3d65ae97ef
|
Sort the atoms.
|
2019-07-23 15:27:03 -04:00 |
|
Rob Rix
|
ac3f487703
|
Correct the precedence of load.
|
2019-07-23 15:24:19 -04:00 |
|
Rob Rix
|
3b6741456d
|
Rename edge to load.
|
2019-07-23 15:23:45 -04:00 |
|
Rob Rix
|
e4470bcbcc
|
Generate load instructions.
|
2019-07-23 15:23:26 -04:00 |
|
Rob Rix
|
0d530dc078
|
Sort the recursive generators.
|
2019-07-23 15:22:12 -04:00 |
|
Rob Rix
|
4bd2129511
|
Lower the precedence in lambda bodies.
|
2019-07-23 15:20:20 -04:00 |
|
Rob Rix
|
8e5c2163b8
|
Correct the precedence of recursive bindings.
|
2019-07-23 15:19:59 -04:00 |
|
Rob Rix
|
308066fbb1
|
Generate recursive bindings.
|
2019-07-23 15:18:04 -04:00 |
|
Rob Rix
|
e03236d301
|
Generate assignments.
|
2019-07-23 15:15:55 -04:00 |
|
Rob Rix
|
068941e3e1
|
Correct the precedence of if/then/else and lambda.
|
2019-07-23 15:12:41 -04:00 |
|
Rob Rix
|
9ccd11ef09
|
ifthenelse and lambda bind looser than assignment.
|
2019-07-23 15:10:51 -04:00 |
|
Rob Rix
|
08878f1a18
|
assign binds looser than application.
|
2019-07-23 15:07:21 -04:00 |
|
Rob Rix
|
59af553279
|
Recur via expr.
|
2019-07-23 15:05:46 -04:00 |
|
Rob Rix
|
d1671a6d7c
|
Rename prj to projection.
|
2019-07-23 15:02:24 -04:00 |
|
Rob Rix
|
b700740174
|
Split out a rule for application.
|
2019-07-23 15:02:05 -04:00 |
|
Rob Rix
|
b58ddb470b
|
Projections are lvalues.
|
2019-07-23 15:01:25 -04:00 |
|
Rob Rix
|
76eb3e2154
|
Pretty-print with mandatory precedence handling.
|
2019-07-23 15:00:32 -04:00 |
|
Rob Rix
|
5b682606bc
|
inParens wraps a Doc, not an action.
|
2019-07-23 12:34:10 -04:00 |
|
Rob Rix
|
99668a33a1
|
Don’t set the precedence recursively.
|
2019-07-23 12:31:35 -04:00 |
|
Rob Rix
|
edbea6991c
|
Indentation.
|
2019-07-23 12:27:24 -04:00 |
|
Rob Rix
|
56d40daef4
|
Rename with to withPrec.
|
2019-07-23 12:26:25 -04:00 |
|
Rob Rix
|
96127627f6
|
Define Prec as a newtype.
|
2019-07-23 12:24:45 -04:00 |
|
Rob Rix
|
3da182dcec
|
Comma-separate records.
|
2019-07-23 12:12:02 -04:00 |
|
Rob Rix
|
453b898581
|
Use colons to separate keys & values.
|
2019-07-23 12:10:24 -04:00 |
|
Rob Rix
|
47b43cf009
|
Don’t pad empty records.
|
2019-07-23 12:08:28 -04:00 |
|
Rob Rix
|
a96eadb620
|
Nest & align recursive bindings.
|
2019-07-23 12:07:08 -04:00 |
|
Rob Rix
|
b119712c53
|
Avoid redundant nesting of statements.
|
2019-07-23 12:03:19 -04:00 |
|
Rob Rix
|
6b250c723e
|
Pretty-print variables early.
|
2019-07-23 11:46:06 -04:00 |
|
Rob Rix
|
7b290632e5
|
🔥 bind.
|
2019-07-23 11:43:38 -04:00 |
|
Rob Rix
|
0045283378
|
Define unstatements using un.
|
2019-07-23 11:40:01 -04:00 |
|
Rob Rix
|
1e4315736f
|
Pass the index to un/unEither’s argument.
|
2019-07-23 11:38:48 -04:00 |
|
Rob Rix
|
6aa85afa76
|
Simplify un/unEither to not assume a Monad.
|
2019-07-23 11:37:38 -04:00 |
|
Rob Rix
|
fa9c991320
|
Define an eliminator for blocks of statements.
|
2019-07-23 11:30:14 -04:00 |
|
Rob Rix
|
6050b9594d
|
Define an eliminator for statements.
|
2019-07-23 11:18:21 -04:00 |
|
Rob Rix
|
16413e1e5b
|
Define a couple of functions for taking apart sequences of syntax.
|
2019-07-23 11:15:47 -04:00 |
|
Rob Rix
|
a63e7c3418
|
Clean up the language extensions in Data.Name.
|
2019-07-23 11:14:43 -04:00 |
|
Rob Rix
|
1caf99b0bf
|
Align.
|
2019-07-23 11:11:24 -04:00 |
|
Rob Rix
|
aa7f1fc6cc
|
Define a Bifunctor instance for :<-.
|
2019-07-23 11:10:49 -04:00 |
|
Rob Rix
|
b0ee9eeb80
|
Derive Foldable, Functor, & Traversable instances for :<-.
|
2019-07-23 11:10:04 -04:00 |
|
Rob Rix
|
4e98c0434b
|
Move the unseq/unseqs exports up.
|
2019-07-23 11:09:12 -04:00 |
|
Rob Rix
|
ed0231cdf2
|
Add an unbind eliminator for >>>=.
|
2019-07-23 11:08:55 -04:00 |
|
Rob Rix
|
9b3164a722
|
🔥 block.
|
2019-07-23 11:02:06 -04:00 |
|
Rob Rix
|
50f9b82ae6
|
Nest sequences.
|
2019-07-23 11:01:25 -04:00 |
|
Rob Rix
|
390b25a894
|
Wrap & indent records.
|
2019-07-23 09:56:00 -04:00 |
|
Rob Rix
|
f1c4d8a1c5
|
Add spaces inside records’ braces.
|
2019-07-23 09:54:08 -04:00 |
|
Rob Rix
|
77acb91a7f
|
Add spaces inside braces.
|
2019-07-23 09:53:13 -04:00 |
|
Rob Rix
|
5c033abb3e
|
🔥 encloseIf.
|
2019-07-23 09:51:52 -04:00 |
|
Rob Rix
|
200bf17d27
|
Print spaces after semicolons.
|
2019-07-23 09:47:24 -04:00 |
|
Rob Rix
|
024d2d4072
|
Don’t qualify the Pretty import.
|
2019-07-23 09:44:12 -04:00 |
|
Rob Rix
|
09fdb30653
|
Alignment.
|
2019-07-23 09:43:27 -04:00 |
|
Rob Rix
|
f851b2bc92
|
Correct a bunch of precedences.
|
2019-07-23 09:40:56 -04:00 |
|
Rob Rix
|
0cb3f181d0
|
Indentation.
|
2019-07-23 09:40:47 -04:00 |
|
Rob Rix
|
a5ac6f3342
|
Correct the condition on parenthesization.
|
2019-07-23 09:40:27 -04:00 |
|
Rob Rix
|
344b5bded1
|
Projection binds tighter than application.
|
2019-07-22 16:26:41 -04:00 |
|
Rob Rix
|
45723e71fc
|
Simplify the pretty-printing of sequences with a helper.
|
2019-07-22 16:19:22 -04:00 |
|
Rob Rix
|
539f8db2f6
|
Test roundtripping of general expressions.
|
2019-07-22 15:42:08 -04:00 |
|
Rob Rix
|
b43bdbb353
|
Use named' to define the name generator.
|
2019-07-22 15:33:47 -04:00 |
|
Rob Rix
|
043d3083fa
|
Generate records.
|
2019-07-22 15:26:02 -04:00 |
|
Rob Rix
|
52da8b764c
|
Qualify the import of Data.Core.
|
2019-07-22 15:13:14 -04:00 |
|
Rob Rix
|
f9eea3892a
|
Print braces around nested binds.
|
2019-07-22 15:07:35 -04:00 |
|
Rob Rix
|
a77ecdbe78
|
Parse binding statements.
|
2019-07-22 15:04:46 -04:00 |
|
Rob Rix
|
a39e7730ea
|
Follow the do' model for the Ruby prelude.
|
2019-07-22 15:02:10 -04:00 |
|
Rob Rix
|
b8bcad0126
|
Use do' instead of block.
|
2019-07-22 14:53:54 -04:00 |
|
Rob Rix
|
1ce4153148
|
do' doesn’t take an explicit body.
|
2019-07-22 14:52:54 -04:00 |
|
Rob Rix
|
0797316ead
|
Rename binds to do'.
|
2019-07-22 14:43:56 -04:00 |
|
Rob Rix
|
724ae1763f
|
Allow binds to process non-binding statements.
|
2019-07-22 14:42:46 -04:00 |
|
Rob Rix
|
a25d971250
|
Better pretty-printing of parse errors.
|
2019-07-22 14:32:05 -04:00 |
|
Rob Rix
|
ed94f7e5c3
|
Fix the expectation for projections.
|
2019-07-22 14:27:03 -04:00 |
|
Rob Rix
|
95226623bf
|
🔥 redundant specs.
|
2019-07-22 14:26:49 -04:00 |
|
Rob Rix
|
45a3d6f0c1
|
Fix the generators.
|
2019-07-22 14:24:40 -04:00 |
|
Rob Rix
|
325dc9d8a2
|
🔥 some redundant FIXMEs.
|
2019-07-22 14:19:17 -04:00 |
|
Rob Rix
|
69b21510b2
|
Implement typechecking for records.
|
2019-07-22 13:38:02 -04:00 |
|
Rob Rix
|
0c80fd246c
|
Set the super field.
|
2019-07-22 13:32:52 -04:00 |
|
Rob Rix
|
37caa4d759
|
Annotate the Ruby prelude deeply.
|
2019-07-22 13:23:21 -04:00 |
|
Rob Rix
|
3f7ac5eb50
|
Compute the fields of the record.
|
2019-07-22 13:06:46 -04:00 |
|
Rob Rix
|
acfcee116f
|
Bind the Ruby prelude sequentially.
|
2019-07-22 13:05:01 -04:00 |
|
Rob Rix
|
900bdbe426
|
Rename objectFrame to recordFrame.
|
2019-07-22 12:08:41 -04:00 |
|
Rob Rix
|
a1f41e155b
|
Rename Obj to Record.
|
2019-07-22 12:08:20 -04:00 |
|
Rob Rix
|
d29928827d
|
Only close over the free variables.
|
2019-07-22 12:07:51 -04:00 |
|
Rob Rix
|
2a600397b2
|
Closures close over their lexical environment once more.
|
2019-07-22 12:06:15 -04:00 |
|
Rob Rix
|
77cb532ae4
|
Annotate prog5 deeply.
|
2019-07-22 11:57:11 -04:00 |
|
Rob Rix
|
9ffd3f87e5
|
Annotate the entire prelude, not just the composition with ann.
|
2019-07-22 11:51:06 -04:00 |
|
Rob Rix
|
1abddf42b3
|
Annotate each binding.
|
2019-07-22 11:50:42 -04:00 |
|
Rob Rix
|
958d32fb52
|
Follow edges through the graph.
|
2019-07-22 11:43:28 -04:00 |
|
Rob Rix
|
9b6f7dd148
|
Obj holds an Env, not a Frame.
|
2019-07-22 11:32:58 -04:00 |
|
Rob Rix
|
384c221ef6
|
🔥 frameEdges.
|
2019-07-22 11:31:47 -04:00 |
|
Rob Rix
|
d41d7757fe
|
Don’t stratify frames through the heap.
|
2019-07-22 11:28:38 -04:00 |
|
Rob Rix
|
6c5240bfba
|
Bind and look names up in an Env.
|
2019-07-22 11:23:59 -04:00 |
|
Rob Rix
|
fea81ee213
|
🔥 the frame operation.
|
2019-07-22 11:19:09 -04:00 |
|
Rob Rix
|
8bc79bd804
|
Define and implement a record operation.
|
2019-07-22 11:18:34 -04:00 |
|
Rob Rix
|
5f21602967
|
🔥 some redundant FIXMEs.
|
2019-07-22 11:15:44 -04:00 |
|
Rob Rix
|
b0bc2cf25b
|
Note a FIXME.
|
2019-07-22 11:10:33 -04:00 |
|
Rob Rix
|
c613b0cef2
|
🔥 the edge instruction.
|
2019-07-22 11:10:00 -04:00 |
|
Rob Rix
|
cd3f73afdb
|
bind acts locally.
|
2019-07-22 11:08:22 -04:00 |
|
Rob Rix
|
4cc6520d57
|
Define :. as strictly projection.
|
2019-07-22 11:04:25 -04:00 |
|
Rob Rix
|
fb318fa56c
|
Tidier frame-pushing.
|
2019-07-22 11:00:42 -04:00 |
|
Rob Rix
|
2c13ed8b53
|
Don’t build a lambda for method calls.
|
2019-07-22 10:44:49 -04:00 |
|
Rob Rix
|
d5afd8434e
|
Rename bind* to abstract*.
|
2019-07-22 10:43:17 -04:00 |
|
Rob Rix
|
8373e3a7bb
|
🔥 a redundant qualifier.
|
2019-07-22 10:42:36 -04:00 |
|
Rob Rix
|
b851621c6f
|
📝 Rec.
|
2019-07-22 10:40:17 -04:00 |
|
Rob Rix
|
5e8a2c27c6
|
Note that :>>= is sequential let.
|
2019-07-22 10:38:08 -04:00 |
|
Rob Rix
|
85c1815b9f
|
Look up globals in the global scope.
|
2019-07-22 10:32:50 -04:00 |
|
Rob Rix
|
c495b4bf07
|
🔥 Edge.
|
2019-07-22 10:28:41 -04:00 |
|
Rob Rix
|
94546f7e75
|
Define a helper for binding multiple local variables in a sequence.
|
2019-07-22 10:24:07 -04:00 |
|
Rob Rix
|
c9b328eff5
|
🔥 a bunch of redundant prefixes.
|
2019-07-22 10:18:17 -04:00 |
|
Rob Rix
|
c175bc3553
|
Bind the global scope recursively.
|
2019-07-22 10:18:02 -04:00 |
|
Rob Rix
|
2a5c1818d1
|
🔥 lam'/lams'.
|
2019-07-22 10:12:48 -04:00 |
|
Rob Rix
|
1d50aecd9e
|
Define prog5 using lams.
|
2019-07-22 10:09:26 -04:00 |
|
Rob Rix
|
db448e6847
|
🔥 Let & Frame.
|
2019-07-22 10:07:27 -04:00 |
|
Rob Rix
|
b5a0624853
|
🔥 redundant parens.
|
2019-07-22 09:42:09 -04:00 |
|
Rob Rix
|
f24ef8b0a4
|
Correct the docs for Record.
|
2019-07-19 15:31:47 -04:00 |
|
Rob Rix
|
bff499e934
|
📝 :..
|
2019-07-19 15:31:19 -04:00 |
|
Rob Rix
|
ef24642f26
|
Give fixity & precedence for :<-.
|
2019-07-19 15:25:33 -04:00 |
|
Rob Rix
|
38efb33327
|
Move unseq & unseqs up under >>>.
|
2019-07-19 15:19:34 -04:00 |
|
Rob Rix
|
e809a2935b
|
📝 :>>=.
|
2019-07-19 15:06:27 -04:00 |
|
Rob Rix
|
6f5e578d0f
|
Define a smart constructor for local bindings.
|
2019-07-19 15:04:27 -04:00 |
|