Rob Rix
f41a1e9f51
Define an analysis to just graph packages.
2018-05-22 13:54:11 -04:00
Rob Rix
51bdfc2c84
Eavesdrop on loads.
2018-05-22 13:52:13 -04:00
Rob Rix
26e83423e0
We don’t define any undecidable instances any more.
2018-05-22 13:47:11 -04:00
Rob Rix
a2bea05066
Construct package vertices in the helper.
2018-05-22 13:45:30 -04:00
Rob Rix
43a0956629
Don’t export packageGraph.
2018-05-22 13:44:36 -04:00
Rob Rix
69dbfda246
Use a single entry point to construct module vertices.
2018-05-22 13:44:01 -04:00
Rob Rix
6d99476997
Revert "Provide a state effect for the previous module."
...
This reverts commit b6a3904a8d15728c4b378cca78eafdfb074ce85d.
2018-05-22 13:35:05 -04:00
Rob Rix
cf2011a811
Revert "Set the current module state."
...
This reverts commit c098e4684f24d8c3c0fe785758eb154cce9cb3a7.
2018-05-22 13:35:03 -04:00
Rob Rix
036df2416d
Revert "Module inclusion uses the State effect."
...
This reverts commit 09b21e10807e27c6d5fc5b112478bfb60fc714bf.
2018-05-22 13:34:58 -04:00
Rob Rix
f9dea05ddb
Revert "Bind the vertex."
...
This reverts commit 8e861863a5cee81cab3c22ceb3b0fb626b95fa5d.
2018-05-22 13:34:54 -04:00
Rob Rix
5e029b8f48
Bind the vertex.
2018-05-22 11:25:49 -04:00
Rob Rix
4226bab371
Module inclusion uses the State effect.
2018-05-22 11:14:40 -04:00
Rob Rix
93c315402d
Set the current module state.
2018-05-22 11:03:36 -04:00
Rob Rix
a4f6b26ae0
Provide a state effect for the previous module.
2018-05-22 11:02:45 -04:00
Rob Rix
18b2cfc89f
Merge branch 'master' into decompose-values
2018-05-18 14:14:55 -04:00
Rob Rix
0cd428286d
Use unName exclusively.
2018-05-18 13:01:31 -04:00
Rob Rix
2c6f266945
Move Name into its own module.
2018-05-18 12:53:01 -04:00
Rob Rix
ca6b32378e
Merge branch 'master' into allocator-effect
2018-05-18 11:09:20 -04:00
Rob Rix
008f628b58
Tweak the Evaluatable re-exports.
2018-05-18 11:07:03 -04:00
Rob Rix
1d883f4969
Move value & subtermValue into Control.Abstract.Value.
2018-05-18 10:47:33 -04:00
Rob Rix
edde9765a8
EvalError doesn’t need the value parameter any more.
2018-05-18 10:45:31 -04:00
Rob Rix
b8ae1e5219
Fix up some fallout from the merge.
2018-05-16 19:13:38 -04:00
Patrick Thomson
dafb3edaf5
Merge remote-tracking branch 'origin/master' into update-fastsum
2018-05-16 18:26:43 -04:00
Patrick Thomson
322f348103
inj -> inject
2018-05-16 18:25:02 -04:00
Rob Rix
dfd422f03b
🔥 the unused Identifier newtype.
2018-05-16 17:35:40 -04:00
Rob Rix
073273706b
🔥 constructorNameAndConstantFields.
2018-05-16 17:35:03 -04:00
Rob Rix
eedaf28861
Merge branch 'master' into hash-syntax-directly
2018-05-16 17:33:27 -04:00
Patrick Thomson
28803beefd
Merge branch 'master' into update-fastsum
2018-05-16 16:50:41 -04:00
Patrick Thomson
6b0198cb00
Remove otiose -Sum prefixes from all Data.Sum operations.
...
There are no modules where we use both Union.inj and Sum.injectSum; as
such, it seems clumsy for such ubiquitous functions as inj and prj to
have such long names when there is no ambiguity. This restores the
codebase to much how it looked before we switched back to a richer
Data.Union.
2018-05-16 15:27:08 -04:00
Charlie Somerville
96f7b65775
Merge branch 'master' into charliesome/value-ref
2018-05-16 12:13:26 -07:00
Rob Rix
6baaadcc17
Compute labels over the syntax alone.
2018-05-16 14:36:33 -04:00
Rob Rix
2dd557064d
Merge branch 'master' into fix-abstract-semantics
2018-05-16 09:20:00 -04:00
Rob Rix
ae74957342
🔥 the unused call graph analysis.
2018-05-16 09:08:07 -04:00
Rob Rix
1fd381b0ce
Revert "Cache the environment at each program state."
...
This reverts commit 4c559aae6ad4f2adaeea58cc1ca37d64d97298d2.
2018-05-15 22:21:16 -04:00
Rob Rix
36075a3ff8
🔥 the InCache/OutCache synonyms.
2018-05-15 22:17:57 -04:00
Rob Rix
6f1c57086b
Cache the environment at each program state.
2018-05-15 22:02:18 -04:00
Rob Rix
77850bcead
Define a datatype holding the contents of the cache.
2018-05-15 21:53:22 -04:00
Rob Rix
8f23e1653c
Spell out the reference to the heap.
2018-05-15 21:51:46 -04:00
Rob Rix
5805a90f9c
Define a synonym for the contents of the cache.
2018-05-15 21:48:04 -04:00
Rob Rix
e677cd6700
Reset the environment on every iteration.
2018-05-15 21:37:48 -04:00
Rob Rix
ae85f16f03
Use synonyms for the in- and out-caches.
2018-05-15 19:24:02 -04:00
Rob Rix
57a365b82f
Reformat all the caching signatures.
2018-05-15 19:19:51 -04:00
Rob Rix
62d76f6a17
Swap the order of the params to converge.
2018-05-15 19:17:40 -04:00
Rob Rix
47e92a766f
Merge remote-tracking branch 'origin/master' into fix-abstract-semantics
2018-05-15 18:47:47 -04:00
Charlie Somerville
f19dabc20b
Merge branch 'master' into charliesome/value-ref
2018-05-15 15:46:25 -07:00
Charlie Somerville
6ab67e3762
fix up cache for ValueRef
2018-05-15 14:31:45 -07:00
Charlie Somerville
4bfc5f9ecd
rename subtermValue to subtermRef
2018-05-15 10:38:16 -07:00
Rob Rix
0f4efa278c
Run module & term analyses in TermEvaluator.
2018-05-15 12:50:38 -04:00
Rob Rix
75b11eab95
Generalize providingLiveSet over the Effectful context.
2018-05-15 12:43:05 -04:00
Rob Rix
16f07a17d1
🔥 Output.
2018-05-14 18:40:22 -04:00
Rob Rix
347c18861e
🔥 the CustomConstructorName typeclass.
...
We can define ConstructorNameWithStrategy 'Custom instances instead.
2018-05-14 11:07:49 -04:00
Rob Rix
eb41652cbd
Output to builders.
2018-05-11 16:37:04 -04:00
Rob Rix
28d4fc30fc
Placate hlint.
2018-05-11 14:55:49 -04:00
Rob Rix
8f4fb96836
Serialize import/call graphs to DOT.
2018-05-11 14:35:27 -04:00
Rob Rix
e723b07d1e
🔥 renderGraph.
2018-05-11 13:25:45 -04:00
Rob Rix
5722538805
Define Analysis.Abstract.Graph using Data.Graph.
2018-05-11 12:22:51 -04:00
Rob Rix
38463e0712
Re-export the Lower typeclass.
2018-05-11 12:21:49 -04:00
Rob Rix
d567e892e1
Define CallGraph as Graph Name.
2018-05-11 12:15:43 -04:00
Rob Rix
bc5862adef
🔥 some redundant language extensions.
2018-05-11 09:15:20 -04:00
Rob Rix
6ba840e90b
Go back to simple address types.
2018-05-11 08:35:43 -04:00
Rob Rix
db185d5e47
Move Located into Data.Abstract.Address.
2018-05-11 00:09:17 -04:00
Rob Rix
fe494ab5c4
Swap the order of the cell and location parameters to Cache.
2018-05-10 19:58:33 -04:00
Rob Rix
3a7ed73d66
Swap the order of the cell and location parameters to Configuration.
2018-05-10 19:57:15 -04:00
Rob Rix
2383cd05c5
Swap the order of the cell and location parameters to Heap.
2018-05-10 19:55:24 -04:00
Rob Rix
1fa5f9a44b
Parameterize Located by the cell type.
2018-05-10 19:33:11 -04:00
Rob Rix
2abfd92678
Bump effects for https://github.com/joshvera/effects/pull/43
2018-05-10 18:27:10 -04:00
Rob Rix
423c229c73
Parameterize Cache by the cell type.
2018-05-10 12:37:06 -04:00
Rob Rix
5d51eb9a5e
Parameterize Configuration by the cell type.
2018-05-10 12:33:49 -04:00
Rob Rix
dcad4d852c
Parameterize Heap by the cell type.
2018-05-10 12:31:12 -04:00
Rob Rix
c22b80ccba
Re-export Cell from Control.Abstract.Heap.
2018-05-10 12:30:15 -04:00
Rob Rix
e40a549ee3
Swap the order of the term & location parameters to Configuration, Cache, and Cacheable.
2018-05-09 13:46:40 -04:00
Rob Rix
4dca1c121e
🔥 the term parameter to Evaluator.
2018-05-09 12:35:01 -04:00
Rob Rix
db2c0e737e
Use resumeLoadError to tighten up graphingLoadErrors.
2018-05-09 12:27:35 -04:00
Rob Rix
a12383f6e1
Rename the LoadError constructor to ModuleNotFound.
2018-05-09 12:23:04 -04:00
Rob Rix
662e385b97
LoadErrors are resumed with the evaluated result, rather than the list of modules to evaluate.
2018-05-09 12:20:23 -04:00
Rob Rix
21717cd079
Use the full type for the modules field of EvaluatingState.
2018-05-08 16:42:27 -04:00
Rob Rix
bd0b7e965e
Define & use UnevaluatedModules/EvaluatedModules synonyms.
2018-05-08 14:19:25 -04:00
Rob Rix
cd16c36342
Merge branch 'master' into evaluate-closures-without-terms
2018-05-08 12:45:56 -04:00
Patrick Thomson
484011666c
Merge remote-tracking branch 'origin/master' into task-graph-traces
2018-05-08 11:56:20 -04:00
Patrick Thomson
e9feb98835
Convert Graph and Task to use effectful traces.
...
This also removes `trace` from Prologue, since the monadic version is better.
2018-05-08 11:48:00 -04:00
Rob Rix
7022fbf346
Provide the jump table in evaluatePackageBodyWith.
2018-05-08 10:04:23 -04:00
Rob Rix
3c73571b0c
Move currentModule/currentPackage into their own module.
2018-05-07 12:14:14 -04:00
Rob Rix
c2a8c0c5fa
Use the combined export module.
2018-05-07 11:54:13 -04:00
Rob Rix
57ddf31ec5
Move the Heap accessors into their own module.
2018-05-07 11:49:59 -04:00
Rob Rix
920ddd893f
Move the configuration accessor into its own module.
2018-05-07 11:49:47 -04:00
Rob Rix
d92a5d22a3
📝 the graphing handlers.
2018-05-07 08:35:49 -04:00
Rob Rix
be8dcef560
Accidental double-comment.
2018-05-07 08:31:58 -04:00
Rob Rix
0fddccf3c1
🔥 redundant parens.
2018-05-06 23:05:42 -04:00
Rob Rix
4f69f5e3de
Merge branch 'master' into scope-effects-to-evaluation
2018-05-06 22:50:04 -04:00
Rob Rix
de5d427b01
Placate hlint.
2018-05-06 19:49:29 -04:00
Rob Rix
709c672bbb
🔥 a redundant constraint.
2018-05-06 17:50:58 -04:00
Rob Rix
5f0d80a6b1
🔥 the Bad* modules.
2018-05-06 17:16:10 -04:00
Rob Rix
9e4e98b2a9
Define a parameterized handler for ValueError.
2018-05-06 17:12:12 -04:00
Rob Rix
e9bec37d6d
Define a parameterized handler for AddressError.
2018-05-06 17:08:49 -04:00
Rob Rix
55997e5c60
Define a parameterized handler for Unspecialized errors.
2018-05-06 17:05:34 -04:00
Rob Rix
df0f798299
Define a runEvalErrorWith handler.
2018-05-06 17:01:11 -04:00
Rob Rix
a47b4cb6f3
Define a parameterized handler for ResolutionError.
2018-05-06 16:50:49 -04:00
Rob Rix
71d5eebbab
🔥 Erroring.
2018-05-06 16:44:04 -04:00
Rob Rix
dcb771a29e
🔥 the TypeChecking module.
2018-05-06 16:41:36 -04:00
Rob Rix
136a9661d2
Split the LoadError handling out into a separate function.
2018-05-06 16:35:04 -04:00
Rob Rix
a1c5d96a93
Rephrase resume without the continuation.
2018-05-06 15:37:11 -04:00
Rob Rix
bfd95c29f8
Allow evaluating to occur in non-final positions.
2018-05-06 15:14:57 -04:00
Rob Rix
32bdafe20e
🔥 EvaluatingEffects.
2018-05-06 15:12:55 -04:00
Rob Rix
7d4db61f26
Add a handler for Fresh effects.
2018-05-06 14:57:03 -04:00
Rob Rix
fbfa61d2fc
Add a helper to run an Effectful computation with no effects.
2018-05-06 14:47:06 -04:00
Rob Rix
3ad0b357c5
🔥 redundant constraints.
2018-05-06 14:44:46 -04:00
Rob Rix
6e54b67c1f
Rename handleState to runState.
2018-05-06 14:28:19 -04:00
Rob Rix
2b5e62dc33
Rename handleReader to runReader.
2018-05-06 14:26:01 -04:00
Rob Rix
848543010d
Handle LoopControl local to Evaluatable.
2018-05-06 14:12:41 -04:00
Rob Rix
5ab5e37c22
Continue with a value.
2018-05-06 14:05:50 -04:00
Rob Rix
bd997d8564
Handle Return locally to evalTerm.
2018-05-06 13:50:58 -04:00
Rob Rix
93e9f11491
Move the LoadStack effect into Evaluatable.
2018-05-06 13:36:49 -04:00
Rob Rix
4c5734452a
🔥 the termInfo parameter from Located.
2018-05-06 13:29:05 -04:00
Rob Rix
30b8002394
🔥 Origin altogether.
2018-05-06 13:25:28 -04:00
Rob Rix
89efff7346
Represent Origin as an even simpler triple.
2018-05-06 13:15:55 -04:00
Rob Rix
a1c9822a87
Represent Origin as a simple triple.
2018-05-06 13:07:40 -04:00
Rob Rix
c0b9a812a1
SomeOrigin doesn’t do anything fancy with the term type.
2018-05-06 12:37:30 -04:00
Rob Rix
88f64e7301
Specialize evaluating.
2018-05-06 12:08:09 -04:00
Rob Rix
3a2ba0b631
Generalize resumingBadModuleResolutions.
2018-05-06 12:04:29 -04:00
Rob Rix
b4185865c2
ResolutionError doesn’t need its value parameter.
2018-05-06 10:42:30 -04:00
Rob Rix
4529ee89e9
Don’t require callers to provide the module & term explicitly.
2018-05-06 09:13:46 -04:00
Rob Rix
d31dce7490
Provide empty cells with a Lower constraint.
2018-05-04 19:40:53 -04:00
Rob Rix
1e173c4f2c
Use ScopedTypeVariables to allow type applications against erroring.
2018-05-04 19:38:14 -04:00
Rob Rix
f83b002e78
Export EvaluatingEffects.
2018-05-04 19:38:01 -04:00
Rob Rix
b5485e8ab8
Rephrase Caching as cachingTerms, convergingModules, and caching handlers.
2018-05-04 19:24:07 -04:00
Rob Rix
a3c04da9fe
Clean up the Tracing module.
2018-05-04 19:13:23 -04:00
Rob Rix
cdb8f26de4
Rephrase Tracing as tracingTerms & tracing handlers.
2018-05-04 19:12:51 -04:00
Rob Rix
04fb5d36b1
Fix up some language extensions &c.
2018-05-04 19:10:01 -04:00
Rob Rix
4c83723fbe
Correct the name of the location type parameter.
2018-05-04 19:06:04 -04:00
Rob Rix
88ec9d7230
Rephrase Dead as revivingTerms, killingModules, and providingDeadSet handlers.
2018-05-04 19:01:01 -04:00
Rob Rix
cdb7169ecb
Derive a Lower instance for Dead.
2018-05-04 18:55:21 -04:00
Rob Rix
7d97d97cc4
Rephrase Collecting & Retaining as collectingTerms & providingLiveSet handlers.
2018-05-04 18:50:48 -04:00
Rob Rix
9af39cad2f
Rephrase TypeChecking as a simple handler.
2018-05-04 18:43:45 -04:00
Rob Rix
9cd92dd310
Rephrase ImportGraphing as graphingTerms, graphingModules, and importGraphing handlers.
2018-05-04 18:40:22 -04:00
Rob Rix
8a8bfc05a3
Rephrase BadVariables as a resumingBadVariables handler.
2018-05-04 18:40:07 -04:00
Rob Rix
b5c2cd6282
Rephrase BadValues as a resumingBadValues handler.
2018-05-04 18:39:54 -04:00
Rob Rix
fefe5bf671
Rephrase BadSyntax as a resumingBadSyntax handler.
2018-05-04 18:39:41 -04:00
Rob Rix
3fba25f491
Rephrase BadModuleResolutions as a resumingBadModuleResolutions handler.
2018-05-04 18:39:30 -04:00
Rob Rix
c16263ee28
Rephrase BadAddresses as a resumingBadAddresses handler.
2018-05-04 18:39:14 -04:00
Rob Rix
c7462b2de3
Rephrase Evaluating as providingCurrentTerm, providingCurrentModule, and evaluating handlers.
2018-05-04 18:38:59 -04:00
Rob Rix
6972847818
Rephrase erroring as a simple handler.
2018-05-04 18:37:56 -04:00
Rob Rix
40af10cf39
Dedent some comments.
2018-05-04 12:31:06 -04:00
Rob Rix
0a6decad08
Make BadAddresses consistent with the other analyses.
2018-05-04 11:55:33 -04:00
Rob Rix
b55e7aa2c2
Make BadValues consistent with the other analyses.
2018-05-04 11:54:51 -04:00
Rob Rix
0d9002b6d7
Make BadModuleResolutions consistent with the other analyses.
2018-05-04 11:54:32 -04:00
Rob Rix
4108302aed
Split MonadAnalysis into AnalyzeModule & AnalyzeTerm classes.
2018-05-04 11:19:36 -04:00
Rob Rix
e283ae0e37
Generalize the Caching functionality.
2018-05-02 19:27:20 -04:00
Rob Rix
083712864a
Generalize a bunch of the import graph functions.
2018-05-02 19:26:25 -04:00
Rob Rix
64132b12a3
Redefine MonadEvaluator as a constraint synonym.
2018-05-02 19:25:57 -04:00
Rob Rix
d073020526
Clean up Evaluating’s imports & use the JumpTable synonym.
2018-05-02 18:45:07 -04:00
Rob Rix
63f4544496
Generalize scatter.
2018-05-02 18:42:58 -04:00
Rob Rix
8ca1a5112a
Use raiseHandler when gathering nondeterminism.
2018-05-02 18:42:35 -04:00
Rob Rix
5d0fce0e6d
Generalize a bunch of Interpreter instances.
2018-05-02 18:38:03 -04:00
Rob Rix
2ee3951af6
Export a bunch of types from Evaluator.
2018-05-02 18:29:40 -04:00
Rob Rix
d281a3f7e6
Make Evaluator a superclass of MonadEvaluator.
2018-05-02 17:51:54 -04:00
Rob Rix
911111987a
Return to piecemeal state effects, and combine them in Evaluating.
2018-05-02 15:54:11 -04:00
Rob Rix
ccba15905d
Modify the load stack locally.
2018-05-02 15:40:23 -04:00
Rob Rix
afdacec83f
Add a helper to ask for the current SomeOrigin.
2018-05-02 14:59:59 -04:00
Rob Rix
baa3f41b39
Provide EvalModule in the body of evalModule.
2018-05-02 12:33:22 -04:00
Rob Rix
44c250bcf3
Use type applications instead of proxies when calling apply.
2018-05-02 12:13:01 -04:00
Rob Rix
ebc8e01cc4
Use our own local definition of Sum.
2018-05-02 12:00:15 -04:00
joshvera
19f0672f34
Separate import graphs into call graph and import graph analyses
2018-05-01 18:10:25 -04:00
joshvera
1f2e234549
Add CallGraph
2018-05-01 17:51:24 -04:00
Rob Rix
09fb3921b6
🔥 a redundant constraint.
2018-05-01 15:23:31 -04:00
Rob Rix
1400626b28
Provide the unevaluated module table in evaluatePackageBody.
2018-05-01 15:13:45 -04:00
Rob Rix
cc72724565
Note a TODO for the traceMs.
2018-05-01 09:29:32 -04:00
Rob Rix
4e15b94309
📝 the reason for the traceMs.
2018-05-01 09:28:44 -04:00
Rob Rix
490f11845d
Merge branch 'master' into break-the-loop
2018-05-01 09:27:23 -04:00
Rob Rix
ae7f180eb0
Correct a couple of hints.
2018-04-30 17:29:31 -04:00
Rob Rix
ce8258fe2c
Merge branch 'master' into break-the-loop
2018-04-30 17:19:01 -04:00
Josh Vera
753f8b0367
Merge branch 'master' into ruby-self-class
2018-04-30 17:13:22 -04:00
Rob Rix
81a69905a4
Revert "Module table entries have to be non-empty."
...
This reverts commit 9a5e83caec105358018b05c75095743cbbe80905.
2018-04-30 17:13:03 -04:00
Rob Rix
7c9c975071
Module table entries have to be non-empty.
2018-04-30 17:11:34 -04:00
Rob Rix
216b414995
LoadError doesn’t need a type parameter for the value.
2018-04-30 16:40:27 -04:00
Rob Rix
e738e91fa8
🔥 redundant constraints.
2018-04-30 16:31:25 -04:00
Rob Rix
e27541a7d8
Load & require use an EvalModule effect.
2018-04-30 16:20:54 -04:00
Patrick Thomson
214045dd98
Add support for array indexing.
...
To test:
```ruby
x = [1,2,3]
x[2]
```
should yield 3.
2018-04-30 16:13:19 -04:00
Rob Rix
25eafb5c53
Rename Eval to EvalClosure.
2018-04-30 15:50:05 -04:00
joshvera
47bcf721ad
Replace ScopedEnvironmentError with EnvironmentLookupError
2018-04-30 15:33:32 -04:00
Rob Rix
7e2d181e66
Decouple evaluation of closure bodies from Evaluatable.
2018-04-30 15:23:17 -04:00
Rob Rix
01d16b1542
Rename lower to lowerBound.
2018-04-30 14:11:16 -04:00
Rob Rix
2fc2090e02
Move ValueError & throwValueError into Data.Abstract.Value.
2018-04-27 10:09:03 -04:00
Rob Rix
33d68f9d8d
Treat breaks as an effect.
2018-04-27 10:00:07 -04:00
Rob Rix
2d8d27f645
Treat continues as an effect.
2018-04-27 09:48:18 -04:00
Rob Rix
ef4ad20252
Show an error message for uncaught returns.
2018-04-27 09:35:22 -04:00
Rob Rix
e7daba2677
Note the semantics of resuming uncaught returns.
2018-04-27 09:34:03 -04:00
Rob Rix
97c76c7fdc
Rename ReturnThrow to Return, and use it as an effect.
2018-04-27 09:26:40 -04:00
Rob Rix
8ebf1e99f3
🔥 the origin field of EvaluatorState.
2018-04-26 14:49:00 -04:00
Rob Rix
41eea6bd4f
Move LoopThrow & ReturnThrow into Evaluator.
2018-04-26 14:44:01 -04:00
Rob Rix
1942e20af1
🔥 runAnalysis.
2018-04-26 10:17:47 -04:00
Rob Rix
fc33283327
Swap the parameters to Interpreter.
2018-04-26 10:15:06 -04:00
Rob Rix
39a0b21c95
Spacing.
2018-04-26 08:49:28 -04:00
Rob Rix
fa34e9e499
Provide LoadError with an Erroring analysis.
2018-04-26 08:18:47 -04:00
Rob Rix
b9b529076b
Give Interpreter a type family for the result type.
2018-04-25 19:12:54 -04:00
Rob Rix
8fd919d20e
🔥 the Monoid instance of Lower.
2018-04-25 18:35:30 -04:00
Rob Rix
2066b33aaf
Rename Empty to Lower.
2018-04-25 18:25:02 -04:00
Rob Rix
1e5e766da9
Move the result type to the next line.
2018-04-25 18:11:14 -04:00
Rob Rix
17494e7b78
Reformat the result type.
2018-04-25 18:10:39 -04:00
Rob Rix
a6fbc1fe22
MonadEvaluator does not imply Fail.
2018-04-25 18:10:05 -04:00
Rob Rix
15dcb44302
Make getConfiguration a function rather than a method.
2018-04-25 18:07:06 -04:00
Rob Rix
8d11219264
Move askRoots/extraRoots into Evaluator.
2018-04-25 18:05:07 -04:00
Rob Rix
87f2f982ff
Use raiseHandler to lift local into Caching.
2018-04-25 18:04:27 -04:00
Rob Rix
501eb2291f
🔥 a redundant membership constraint.
2018-04-25 18:04:17 -04:00
Rob Rix
032d5bb183
🔥 CachingEffects.
2018-04-25 18:03:17 -04:00
Rob Rix
40fcaa58b9
Define a Retaining analysis.
2018-04-25 17:53:45 -04:00
Rob Rix
f0635c0390
📝 Collecting.
2018-04-25 17:53:37 -04:00
Rob Rix
fbd013c3d8
Sort the deriving clause.
2018-04-25 17:52:17 -04:00
Rob Rix
39e9dc84a6
Apply some “hints,” begrudgingly.
2018-04-25 17:34:43 -04:00
Rob Rix
90e9fbb708
Just say empty.
2018-04-25 16:58:25 -04:00
Rob Rix
028c94e4ec
Tidy up a bunch of language extensions.
2018-04-25 16:50:45 -04:00
Rob Rix
beb7261608
Derive the MonadAnalysis instance for TypeChecking.
2018-04-25 16:49:27 -04:00
Rob Rix
2267f24ea8
Merge branch 'master' into analyses-provide-and-handle-effects
2018-04-25 16:43:00 -04:00
Rob Rix
6646c8ca27
Rename Quietly to BadSyntax.
2018-04-25 15:44:44 -04:00
Rob Rix
3df75c2947
Derive a bunch of MonadAnalysis instances.
2018-04-25 15:41:30 -04:00
Rob Rix
4375692182
Rephrase MonadHole as a pure AbstractHole class.
2018-04-25 15:28:24 -04:00
Patrick Thomson
35a85e6a06
Merge branch 'master' into resumable-type-errors
2018-04-25 15:19:36 -04:00
Rob Rix
50bbe11d8d
Interpret all of the analyses’ effects using raiseHandler.
2018-04-25 12:52:09 -04:00
Rob Rix
8ba011ea8d
Use raiseHandler to lift BadValues’ handler.
2018-04-25 12:29:51 -04:00
Rob Rix
16393af491
Spacing.
2018-04-25 12:29:04 -04:00
Rob Rix
2270b0378f
Handle ArithmeticError.
2018-04-25 12:18:46 -04:00
Patrick Thomson
83925dc194
Merge branch 'master' into resumable-type-errors
2018-04-25 12:16:31 -04:00
Rob Rix
b875664847
Merge branch 'master' into analyses-provide-and-handle-effects
2018-04-25 12:06:20 -04:00
Rob Rix
6c1eb6f120
Use the Empty instances for the initial values.
2018-04-25 12:05:36 -04:00
Rob Rix
76b00d1074
🔥 the Effects type family.
2018-04-25 11:57:01 -04:00
Timothy Clem
e8488329fd
Merge branch 'master' into resume-on-resolutionerror
2018-04-25 07:57:53 -07:00
Rob Rix
0b0bd2a1a8
🔥 Control.Effect.Fresh in favour of Control.Monad.Effect.Fresh.
2018-04-25 10:40:58 -04:00
Rob Rix
2c770138ec
Use runFresh instead of runEffect.
2018-04-25 09:58:42 -04:00
Rob Rix
5b18b47db7
Interpreters determine their effects.
2018-04-25 09:07:27 -04:00
Rob Rix
e3e6417994
Extract holes into a new, relatively unconstrained typeclass.
2018-04-25 09:06:36 -04:00
Rob Rix
02572cb49d
Parens.
2018-04-25 09:04:30 -04:00
Rob Rix
2da077217c
Move Unspecialized handling into Quietly.
2018-04-24 19:44:10 -04:00
Rob Rix
abcf625569
Define an Interpreter instance for Evaluating.
2018-04-24 19:16:24 -04:00
Rob Rix
ef45f3b2ec
Define an Interpreter instance for Caching.
2018-04-24 19:02:15 -04:00
Rob Rix
c07272bc7e
Define an Interpreter instance for ImportGraphing.
2018-04-24 18:57:22 -04:00
Rob Rix
ff3ba0fa9d
Define an Interpreter instance for Collecting.
2018-04-24 18:55:38 -04:00
Rob Rix
b4dd5cffc8
Define an Interpreter instance for Quietly.
2018-04-24 18:53:18 -04:00
Rob Rix
882a542d19
Define a MonadAnalysis instance for DeadCode.
2018-04-24 18:51:56 -04:00
Rob Rix
db99f9efad
Define an Interpreter instance for Tracing.
2018-04-24 18:49:26 -04:00
Rob Rix
0adb878ccf
Re-export relay from Analysis.
2018-04-24 18:47:17 -04:00
Rob Rix
1cedeac8e1
Move Erroring into its own module.
2018-04-24 18:44:23 -04:00
Rob Rix
7a86d74d10
Define an Interpreter instance for BadVariables.
2018-04-24 18:39:46 -04:00
Rob Rix
5536876e13
Define an Interpreter instance for BadValues.
2018-04-24 18:39:32 -04:00
Rob Rix
ef4ed428cf
Define an Interpreter instance for BadModuleResolutions.
2018-04-24 18:39:21 -04:00
Rob Rix
5df26fd4a9
Define an Interpreter instance for BadAddresses.
2018-04-24 18:39:12 -04:00
Rob Rix
68b748139d
Swap the order of the BadVariables effects.
2018-04-24 18:39:01 -04:00
Patrick Thomson
5470073205
handle ArithmeticErrors properly.
2018-04-24 18:34:05 -04:00
Timothy Clem
af46dbd3aa
Merge remote-tracking branch 'origin/master' into resume-on-resolutionerror
2018-04-24 14:00:07 -07:00
Rob Rix
739687f70e
🔥 a redundant State effect.
2018-04-24 16:59:38 -04:00
Rob Rix
77e8c4c6ed
🔥 some redundant language extensions.
2018-04-24 16:59:19 -04:00
Rob Rix
54d373d5ce
🔥 a redundant State effect.
2018-04-24 16:55:49 -04:00
Rob Rix
6de62e0cf8
🔥 some redundant parens.
2018-04-24 16:55:35 -04:00
Patrick Thomson
e986fdac39
merge fallout + remove MonadFail
2018-04-24 15:56:02 -04:00
Patrick Thomson
4fd34d0412
Merge remote-tracking branch 'origin/master' into resumable-type-errors
2018-04-24 15:50:20 -04:00
Patrick Thomson
f4e0ab8977
Working implementation.
2018-04-24 15:35:50 -04:00
Rob Rix
2875aa90a3
Tidy up the ImportGraphing language extensions.
2018-04-24 14:59:24 -04:00
Patrick Thomson
89c1403f89
WIP
2018-04-24 14:12:28 -04:00
Rob Rix
b042a6a6d4
Provide resumable exceptions in the analyses which resume them.
2018-04-24 13:01:56 -04:00
Rob Rix
a85e41666b
Don’t re-export EvaluatorState & State from Evaluating.
2018-04-24 12:01:28 -04:00
Rob Rix
8bb4c0a22c
Merge branch 'master' into pass-the-effects-list-around
2018-04-24 11:57:33 -04:00
Rob Rix
812adece0f
🔥 all the MonadFail instances.
...
We can still fail using `raise (fail …)`, but it’s less convenient now.
2018-04-24 11:45:35 -04:00
Rob Rix
61452e8978
Spacing.
2018-04-24 11:37:06 -04:00
Rob Rix
d1adb3939f
Differentiate between unallocated and uninitialized addresses.
2018-04-24 11:34:13 -04:00
Rob Rix
5fa6dc28ea
🔥 MonadFresh.
2018-04-24 11:16:35 -04:00
Rob Rix
d3af580585
Clean up the language extensions.
2018-04-24 11:06:31 -04:00
Rob Rix
f16bf3e5ac
Weaken the conditions on the MonadEvaluator & MonadAnalysis instances for Evaluating.
2018-04-24 10:43:42 -04:00
Rob Rix
d79d17768b
🔥 the lens helpers in Evaluating.
2018-04-24 10:37:24 -04:00
Rob Rix
3039dcf8d0
🔥 a couple of redundant membership constraints on the origin.
2018-04-24 10:36:32 -04:00
Rob Rix
4978c8ce24
Define a single, universal instance of MonadModuleTable.
2018-04-24 10:34:50 -04:00
Rob Rix
7d39812ea3
Define a single, universal instance of MonadHeap.
2018-04-24 10:30:21 -04:00
Rob Rix
b109fcd51f
Define a single, universal instance of MonadEnvironment.
2018-04-24 10:27:59 -04:00
Rob Rix
ddc06e6aeb
Define a single MonadControl instance once and for all.
2018-04-24 10:23:20 -04:00
Rob Rix
035c606dca
Move EvaluatingState into Evaluator and rename to EvaluatorState.
2018-04-24 10:18:14 -04:00
Rob Rix
47ba9a6d2b
🔥 a couple of dependencies on EvaluatingState.
2018-04-24 10:00:37 -04:00
Patrick Thomson
9ca80fe933
Merge cruft + rename ControlThrow
2018-04-23 19:31:56 -04:00
Rob Rix
09c21259a2
Parameterize all the typeclasses by the effect type.
2018-04-23 19:12:55 -04:00
Timothy Clem
7f95a26720
Remove this traceM
2018-04-23 15:47:42 -07:00
Timothy Clem
c3bf5133c8
Support Go import graphing a bit better
2018-04-23 15:47:23 -07:00
Timothy Clem
50e359c5a5
Allow getting the current Package
2018-04-23 15:46:56 -07:00
Timothy Clem
faae1a1020
Track the paths we searched in resolution notfound errors
2018-04-23 13:26:21 -07:00
Timothy Clem
d5b67c0613
Use a single NotFoundError instead of language specific ResolutionErrors
2018-04-23 13:18:52 -07:00
Patrick Thomson
a57fd63da5
Add support for break and continue inside loops.
...
Similar to @charliesome's implementation of return, we throw a
non-resumable exception inside loop invocations, and handle these
cases inside MonadValue's `loop` function.
2018-04-23 12:46:57 -04:00
Charlie Somerville
2e21ecfd16
make ControlThrow a non-resumable exception
2018-04-23 11:54:20 +10:00
Charlie Somerville
41fd599843
rename throwException to throwResumable, resumeException to resume
2018-04-23 11:44:29 +10:00
Charlie Somerville
ae8ca35222
add a ControlThrow exception type
2018-04-20 14:47:49 +10:00
joshvera
19a7e0e4bd
appease hlint
2018-04-19 13:52:50 -04:00
joshvera
c8784ffab9
Revert "Yield maybes from scopedEnvironment, and values from ScopedEnvironmentErrors"
...
This reverts commit d09318a14143b80ae4e90a7192e94b0f9b512bd3.
2018-04-19 13:45:39 -04:00
joshvera
04428df6bd
Return holes from uninitialized address errors
2018-04-19 13:12:51 -04:00
joshvera
d8e446f0a7
Add a hole value and don't run a condition if it depends on a hole
2018-04-19 12:20:24 -04:00
joshvera
9d7038a53b
Yield maybes from scopedEnvironment, and values from ScopedEnvironmentErrors
2018-04-18 17:56:27 -04:00
joshvera
1fcb16da32
Add logging
2018-04-18 15:16:15 -04:00
joshvera
249e2977ab
Throw and catch export errors
2018-04-17 19:12:53 -04:00
Timothy Clem
42f680fc47
Merge remote-tracking branch 'origin/fix-graph-errors' into typescript-graphs
2018-04-17 14:24:41 -07:00
Timothy Clem
8120b2af73
Merge remote-tracking branch 'origin/master' into typescript-graphs
2018-04-17 14:24:10 -07:00
joshvera
a009d78f81
Merge remote-tracking branch 'origin/typescript-graphs' into fix-graph-errors
2018-04-17 17:07:44 -04:00
Patrick Thomson
dfe40b4add
Remove fails from Data.Syntax.Literal.
2018-04-17 15:33:45 -04:00
Patrick Thomson
7344a82295
WIP
2018-04-17 15:03:51 -04:00
Timothy Clem
0c5cabd93c
Merge remote-tracking branch 'origin/fix-graph-errors' into typescript-graphs
2018-04-17 11:51:03 -07:00
joshvera
457378c1e1
Merge remote-tracking branch 'origin/typescript-graphs' into fix-graph-errors
2018-04-17 14:50:17 -04:00
Timothy Clem
d4769e41ba
Throw instead of failing for bad pair value
2018-04-17 11:43:02 -07:00
Timothy Clem
850e8f238a
Keep a load stack to break circular loads/imports
2018-04-17 11:02:47 -07:00