Rob Rix
|
8aad196202
|
Assign until statements.
|
2017-05-01 16:37:13 -04:00 |
|
Rob Rix
|
5ab78c37b9
|
Assign while modifiers.
|
2017-05-01 15:59:08 -04:00 |
|
Rob Rix
|
173c0ecef6
|
Assign while statements.
|
2017-05-01 15:57:09 -04:00 |
|
Rob Rix
|
90b07663ed
|
Avoid producing extra errors when we have one already.
|
2017-05-01 15:53:00 -04:00 |
|
Rob Rix
|
b1ef673d86
|
Errors point at the start of the current node where possible.
|
2017-05-01 11:21:07 -04:00 |
|
Rob Rix
|
f709375805
|
Unpack the actual symbol explicitly.
|
2017-05-01 11:19:30 -04:00 |
|
Rob Rix
|
50758e0f7e
|
Number the lines in the error message output.
|
2017-05-01 11:16:08 -04:00 |
|
Rob Rix
|
1dabf3c9d3
|
Show up to three lines of context.
|
2017-05-01 11:04:49 -04:00 |
|
Rob Rix
|
91e9e59488
|
📝 showError.
|
2017-05-01 10:52:59 -04:00 |
|
Rob Rix
|
c0dd99a5a4
|
Pull the context into the where clause.
|
2017-05-01 10:52:29 -04:00 |
|
Rob Rix
|
e33da12d1b
|
Show the source of the error with a clang-style error message.
|
2017-05-01 10:51:12 -04:00 |
|
Rob Rix
|
434adf3eca
|
Show the expectation with a helper.
|
2017-05-01 10:33:21 -04:00 |
|
Rob Rix
|
5662b9cead
|
Define a function to show an Error.
|
2017-05-01 10:32:25 -04:00 |
|
Rob Rix
|
9593416367
|
Define a helper to show a comma-separated list of symbols.
Complications due to the Oxford comma.
|
2017-05-01 10:32:07 -04:00 |
|
Rob Rix
|
c1ac705f54
|
Define a helper to show a SourcePos.
|
2017-05-01 10:31:46 -04:00 |
|
Rob Rix
|
7fcd50b512
|
Merge branch 'master' into better-error-reporting-for-repetitions
|
2017-05-01 10:06:01 -04:00 |
|
Rob Rix
|
e9385c99e6
|
🔥 indexing.
|
2017-05-01 09:52:34 -04:00 |
|
Rob Rix
|
a7574b685a
|
🔥 the --debug flag.
|
2017-05-01 09:51:40 -04:00 |
|
Rob Rix
|
0bf52e3dde
|
Result has field selectors.
|
2017-04-28 15:54:34 -04:00 |
|
Rob Rix
|
8872a7ec6a
|
Errors record the symbol of the current node (if any).
|
2017-04-28 15:49:00 -04:00 |
|
Rob Rix
|
0168773814
|
Results hold errors instead of text.
|
2017-04-28 15:45:13 -04:00 |
|
Rob Rix
|
3d1e74bf4e
|
Define an Error datatype.
|
2017-04-28 15:34:18 -04:00 |
|
Rob Rix
|
250d095598
|
Result only has one case.
|
2017-04-28 15:31:23 -04:00 |
|
Rob Rix
|
a988d54ed6
|
Propagate errors from alternations.
|
2017-04-28 15:26:19 -04:00 |
|
Rob Rix
|
eb089bb571
|
Successful results can hold errors.
|
2017-04-28 15:24:42 -04:00 |
|
Rob Rix
|
ec8be238d1
|
Children assignments continue after the last child assignment.
|
2017-04-28 15:19:55 -04:00 |
|
Rob Rix
|
ca0d4328ff
|
Return the final state from assignAllFrom.
|
2017-04-28 15:18:33 -04:00 |
|
Rob Rix
|
743935b098
|
Include all nodes in indices.
|
2017-04-28 14:35:04 -04:00 |
|
Rob Rix
|
da22bee49e
|
Group SourceSpan fields together.
|
2017-04-28 11:35:50 -04:00 |
|
Rob Rix
|
f0f4ca393c
|
Merge branch 'master' into simplified-json-rendering-path
|
2017-04-28 09:51:07 -04:00 |
|
Rob Rix
|
285fb8f3a7
|
🔥 the unused ToJSON instances for Category and Range.
|
2017-04-28 09:25:12 -04:00 |
|
Rob Rix
|
026f855f0b
|
Move indexing out of the JSON renderer.
|
2017-04-27 19:42:55 -04:00 |
|
Rob Rix
|
4334e24aa4
|
Replace the indexing renderer with an indexing operation.
|
2017-04-27 19:40:54 -04:00 |
|
Rob Rix
|
6ed683f9be
|
🔥 jsonParseTree.
|
2017-04-27 19:38:18 -04:00 |
|
Rob Rix
|
4975dc61fe
|
Move decoration of terms out of the JSON renderer.
|
2017-04-27 19:36:35 -04:00 |
|
Rob Rix
|
013d998ef3
|
Extract a common handler for path-annotated rendering.
|
2017-04-27 19:27:03 -04:00 |
|
Rob Rix
|
66d611b460
|
Handle debug rendering for indices.
|
2017-04-27 19:24:41 -04:00 |
|
Rob Rix
|
c014c75b0e
|
Handle debug rendering for parse trees.
|
2017-04-27 19:23:31 -04:00 |
|
Rob Rix
|
9944b32d9f
|
Define a ToJSONFields instance for SourceText.
|
2017-04-27 19:22:22 -04:00 |
|
Rob Rix
|
59735e5dac
|
Don’t pass the debug flags to the renderers.
|
2017-04-27 19:13:18 -04:00 |
|
Rob Rix
|
5267ff4bb5
|
🔥 redundant parens.
|
2017-04-27 19:13:06 -04:00 |
|
Rob Rix
|
4394c2e833
|
🔥 the ToJSON instances for Data.Record.
|
2017-04-27 18:56:53 -04:00 |
|
Rob Rix
|
63b30ac1a3
|
Render parse trees/indices’ records to JSON.
|
2017-04-27 18:56:41 -04:00 |
|
Rob Rix
|
862fb3654b
|
Define a ToJSONFields instance for SourceSpan.
|
2017-04-27 18:51:41 -04:00 |
|
Rob Rix
|
70dd381f26
|
Simplify the ToJSONFields instance for Syntax.
|
2017-04-27 18:28:52 -04:00 |
|
Rob Rix
|
fed06ff0e1
|
Define ToJSONFields instances for Free & FreeF.
|
2017-04-27 18:23:10 -04:00 |
|
Rob Rix
|
3bf4f63e0c
|
Define a ToJSONFields instance for CofreeF.
|
2017-04-27 18:17:05 -04:00 |
|
Rob Rix
|
607d4f0398
|
Define a ToJSONFields instance for SplitPatch.
|
2017-04-27 18:10:31 -04:00 |
|
Rob Rix
|
1520fb0c2b
|
Replace syntaxToTermField with a ToJSONFields instance.
|
2017-04-27 18:10:12 -04:00 |
|
Rob Rix
|
43a5580bf5
|
Define a ToJSONFields instance for Terms.
|
2017-04-27 18:05:08 -04:00 |
|
Rob Rix
|
5afd5b8fa6
|
Distribute ToJSONFields through Maybe.
|
2017-04-27 17:56:24 -04:00 |
|
Rob Rix
|
5beff62cbc
|
Define ToJSONFields instances for Range and Category.
|
2017-04-27 17:53:36 -04:00 |
|
Rob Rix
|
adf868e5c8
|
Add a class to produce JSON fields for a type.
|
2017-04-27 17:49:37 -04:00 |
|
Rob Rix
|
17d413d267
|
Get all the fields uniformly.
|
2017-04-27 16:58:39 -04:00 |
|
Rob Rix
|
a5a86b33ea
|
Don’t pass the syntax around.
|
2017-04-27 16:58:13 -04:00 |
|
Rob Rix
|
96d2ccf92e
|
Decorate the term with the identifier algebraically.
|
2017-04-27 16:57:47 -04:00 |
|
Rob Rix
|
4abace2490
|
🔥 an unnecessary Functor constraint.
|
2017-04-27 16:47:08 -04:00 |
|
Rob Rix
|
f0b89c508c
|
🔥 parseDecorator.
|
2017-04-27 16:21:06 -04:00 |
|
Rob Rix
|
9dac0260e3
|
🔥 Identifier.
|
2017-04-27 16:18:11 -04:00 |
|
Rob Rix
|
d1b088eda5
|
Work around the lack of Show1 for IntMap in lts.
|
2017-04-26 18:39:39 -04:00 |
|
Rob Rix
|
d6b7e408e3
|
Don’t add a newline after the caret.
|
2017-04-26 15:27:30 -04:00 |
|
Rob Rix
|
f991988eea
|
Show the source of errors.
|
2017-04-26 14:54:29 -04:00 |
|
Rob Rix
|
d9d7f98921
|
Consolidate error reporting.
|
2017-04-26 14:37:07 -04:00 |
|
Rob Rix
|
dfab45dc65
|
Tidy up handling of Empty rules.
|
2017-04-26 13:50:45 -04:00 |
|
Rob Rix
|
59be638d70
|
🔥 the unlawful Monad instance for Result.
|
2017-04-26 13:40:03 -04:00 |
|
Rob Rix
|
52aa3800b7
|
Don’t use Result’s Monad instance for Children rules.
|
2017-04-26 13:39:42 -04:00 |
|
Rob Rix
|
d2da6e1ad7
|
Move the Alt rule down to reflect constructor order.
|
2017-04-26 13:37:48 -04:00 |
|
Rob Rix
|
89b30a5124
|
Pull the Choose case up a level.
|
2017-04-26 13:36:57 -04:00 |
|
Rob Rix
|
095e279380
|
Pull the Children case up a level.
|
2017-04-26 13:35:21 -04:00 |
|
Rob Rix
|
a6b5fa0634
|
Pull the Source case up a level.
|
2017-04-26 13:33:52 -04:00 |
|
Rob Rix
|
f781118abb
|
Move the location at end case up.
|
2017-04-26 13:32:24 -04:00 |
|
Rob Rix
|
2db005505e
|
Pull the Location case up a level.
|
2017-04-26 13:31:26 -04:00 |
|
Rob Rix
|
3de156447f
|
Match against the nodes.
|
2017-04-26 13:30:07 -04:00 |
|
Rob Rix
|
e9bff3be5a
|
Use the where clause’s binding for the source.
|
2017-04-26 13:28:34 -04:00 |
|
Rob Rix
|
4103936ca2
|
Use the where clause’s binding for the offset.
|
2017-04-26 13:28:04 -04:00 |
|
Rob Rix
|
b392c9d6b7
|
Bind the post-drop state in the where clause.
|
2017-04-26 13:24:04 -04:00 |
|
Rob Rix
|
a430b444f5
|
Pull the runAssignment iterator into the where clause.
|
2017-04-26 13:23:07 -04:00 |
|
Rob Rix
|
e67f5a9398
|
Guard terms with symbols.
|
2017-04-26 13:19:10 -04:00 |
|
Rob Rix
|
296717777d
|
Rearrange leaf to put the fmap first.
|
2017-04-26 13:18:40 -04:00 |
|
Rob Rix
|
b9027441e2
|
Use the leaf combinator to assign constants and identifiers.
|
2017-04-26 12:37:13 -04:00 |
|
Rob Rix
|
34e945d1fa
|
Use the leaf combinator to assign literals & comments.
|
2017-04-26 12:34:34 -04:00 |
|
Rob Rix
|
620b1ebd49
|
Flip leaf’s argument order.
|
2017-04-26 12:33:51 -04:00 |
|
Rob Rix
|
860138fe19
|
🔥 an extra space.
|
2017-04-26 12:33:37 -04:00 |
|
Rob Rix
|
129d962041
|
Add a leaf combinator.
|
2017-04-26 12:31:00 -04:00 |
|
Rob Rix
|
c2df871607
|
Replace Symbol with a unary Choose.
|
2017-04-26 12:17:43 -04:00 |
|
Rob Rix
|
d583b3cfcc
|
Prevent forgetting to shadow the initial state.
|
2017-04-26 12:11:03 -04:00 |
|
Rob Rix
|
677031daaa
|
Choices’ errors note the choice.
|
2017-04-26 12:07:33 -04:00 |
|
Rob Rix
|
77fe6aff31
|
empty is the left- and right-identity of <|>.
|
2017-04-26 12:05:49 -04:00 |
|
Rob Rix
|
ffe7b2ff66
|
Handle alternations of choices on both sides.
|
2017-04-26 12:04:34 -04:00 |
|
Rob Rix
|
38a92b7eda
|
Handle alternations of choices on the right.
|
2017-04-26 12:00:51 -04:00 |
|
Rob Rix
|
c85081ea6b
|
Show the symbol when choice fails.
|
2017-04-26 11:58:03 -04:00 |
|
Rob Rix
|
ffbca016db
|
Avoid revisiting anonymous nodes.
|
2017-04-26 11:47:53 -04:00 |
|
Rob Rix
|
d57df3f5fb
|
Show a better error for symbol rules.
|
2017-04-26 11:44:53 -04:00 |
|
Rob Rix
|
61b3e3c71f
|
Show a better error for symbol rules at end of input.
|
2017-04-26 11:40:59 -04:00 |
|
Rob Rix
|
6010bcb439
|
Show a better error for committed choice at end of input.
|
2017-04-26 11:39:32 -04:00 |
|
Rob Rix
|
b7d84470fb
|
Extract how we show choices into the where clause.
|
2017-04-26 11:37:00 -04:00 |
|
Rob Rix
|
b7899248d5
|
🔥 a redundant FIXME.
|
2017-04-26 11:34:43 -04:00 |
|
Rob Rix
|
2154e4a4ad
|
Construct committed choices using the Alternative interface.
|
2017-04-26 11:29:24 -04:00 |
|
Rob Rix
|
447412be86
|
Define committed choice as a map of alternatives.
|
2017-04-26 11:29:13 -04:00 |
|
Rob Rix
|
122558da3b
|
Stub in a combinator for committed choice.
|
2017-04-26 10:44:06 -04:00 |
|
Rob Rix
|
1fe76ee24c
|
Show the rest of assignments following Symbol rules.
|
2017-04-26 09:33:36 -04:00 |
|
Rob Rix
|
49f5e007da
|
🔥 Get assignment.
|
2017-04-25 15:09:41 -04:00 |
|
Rob Rix
|
7be5f34a38
|
🔥 range/sourceSpan.
|
2017-04-25 15:09:34 -04:00 |
|
Rob Rix
|
71515d73ae
|
Reintroduce Symbol assignment.
|
2017-04-25 15:08:23 -04:00 |
|
Rob Rix
|
335cb3194f
|
🔥 State assignment.
|
2017-04-25 15:05:04 -04:00 |
|
Rob Rix
|
d5797eba16
|
Define location assignment.
|
2017-04-25 15:04:08 -04:00 |
|
Rob Rix
|
c2607ffc4c
|
📝 Union’s constructors.
|
2017-04-25 13:53:18 -04:00 |
|
Rob Rix
|
03c57f2ef4
|
Merge branch 'master' into a-la-carte-folds
|
2017-04-25 12:47:47 -04:00 |
|
Rob Rix
|
8e2c1ffd5f
|
Correct the docs of identifierAlg.
|
2017-04-25 12:39:05 -04:00 |
|
Rob Rix
|
4644bcc2ef
|
Use Traversable as shorthand for Functor + Foldable.
This is not generally a good idea, but we strictly control these unions & syntax types, and it’s hard to imagine non-`Traversable` syntax.
|
2017-04-25 12:35:49 -04:00 |
|
Rob Rix
|
b6723c56f2
|
Panic! Our system.
|
2017-04-25 12:33:41 -04:00 |
|
Rob Rix
|
0db2c73a1e
|
Replace the identifiable algebra with an identifier algebra.
|
2017-04-25 12:30:36 -04:00 |
|
Rob Rix
|
69bbc13da3
|
Methods must be part of the syntax.
|
2017-04-25 12:27:42 -04:00 |
|
Rob Rix
|
30e72f3344
|
Methods are declarations, not statements.
|
2017-04-25 12:27:27 -04:00 |
|
Rob Rix
|
00200d7822
|
📝 some cases cyclomaticComplexityAlg doesn’t handle.
|
2017-04-25 12:17:17 -04:00 |
|
Rob Rix
|
a00ff68f32
|
Control exits methods at least once.
|
2017-04-25 12:15:28 -04:00 |
|
Rob Rix
|
390297aa56
|
📝 cyclomaticComplexityAlg.
|
2017-04-25 12:13:33 -04:00 |
|
Rob Rix
|
91366b0ba4
|
📝 CyclomaticComplexity.
|
2017-04-25 12:11:57 -04:00 |
|
Rob Rix
|
42d8b42f60
|
Merge branch 'a-la-carte-folds' of https://github.com/github/semantic-diff into a-la-carte-folds
|
2017-04-25 12:10:56 -04:00 |
|
Rob Rix
|
7bf60eb2ff
|
🔥 CVAlgebra handling.
We run the risk of making paramorphisms quadratic if we use histomorphisms to decorate, so we compromise on the added flexibility.
|
2017-04-25 12:10:48 -04:00 |
|
Rob Rix
|
2b703d1f31
|
Generalize decoratorWithAlgebra to take an R-algebra.
|
2017-04-25 12:09:10 -04:00 |
|
Timothy Clem
|
975304097c
|
Remove TODO and leave readFile behavior alone for now
|
2017-04-25 09:07:51 -07:00 |
|
Timothy Clem
|
6be9b9c3cd
|
🔥 concurrently
|
2017-04-25 09:05:48 -07:00 |
|
Timothy Clem
|
12948181c5
|
Merge remote-tracking branch 'origin/master' into clean-parse-and-diff-interface
|
2017-04-25 09:02:41 -07:00 |
|
Rob Rix
|
68e5042155
|
Merge branch 'master' into a-la-carte-folds
|
2017-04-25 10:55:26 -04:00 |
|
Rob Rix
|
6c38ec2b77
|
Correct the deprecation pragma.
|
2017-04-24 19:16:50 -04:00 |
|
Rob Rix
|
22ac1e3441
|
Add a deprecation notice to rToCV.
|
2017-04-24 18:42:35 -04:00 |
|
Rob Rix
|
7e21c167e1
|
Define an adaptor from F-algebras to CV-algebras.
|
2017-04-24 18:35:22 -04:00 |
|
Rob Rix
|
22be6c30f0
|
Factor Base out of the algebra type synonyms to avoid ambiguity.
|
2017-04-24 18:34:28 -04:00 |
|
Rob Rix
|
5b32f9d1b6
|
Note the awful complexity of rToCV.
|
2017-04-24 16:09:49 -04:00 |
|
Rob Rix
|
440cc2e792
|
📝 rToCV.
|
2017-04-24 16:00:06 -04:00 |
|
Rob Rix
|
4ac68417a2
|
Define the promotion of R-algebras into CV-algebras.
|
2017-04-24 15:58:29 -04:00 |
|
Rob Rix
|
bee4b4b06e
|
Define a type synonym for course-of-value algebras.
|
2017-04-24 15:55:09 -04:00 |
|
joshvera
|
7395e88ab0
|
Remove Data.RandomWalkSimilarity
|
2017-04-24 15:53:11 -04:00 |
|
Rob Rix
|
bc3fc4b4af
|
📝 fToR.
|
2017-04-24 15:46:51 -04:00 |
|
Rob Rix
|
d6cb7890b9
|
Define a function to promote F-algebras into R-algebras.
|
2017-04-24 15:45:50 -04:00 |
|
Rob Rix
|
953034ccb3
|
Define FAlgebra in terms of the Base of some type.
|
2017-04-24 15:44:46 -04:00 |
|
Rob Rix
|
c53076b071
|
Replace identifiable with its R-algebra.
|
2017-04-24 15:43:29 -04:00 |
|
Rob Rix
|
d429d77b15
|
Define a type synonym for R-algebras.
|
2017-04-24 15:43:22 -04:00 |
|
Rob Rix
|
fa520d6089
|
Move the definition of FAlgebra up.
|
2017-04-24 15:41:17 -04:00 |
|
Rob Rix
|
82a40d19ff
|
cyclomaticComplexityAlg is an F-algebra.
|
2017-04-24 15:40:31 -04:00 |
|
Rob Rix
|
46c044d448
|
Replace cyclomaticComplexity with its algebra.
|
2017-04-24 15:39:46 -04:00 |
|
Rob Rix
|
1e40f9b823
|
📝 decoratorWithAlgebra’s parameters.
|
2017-04-24 15:38:34 -04:00 |
|
Rob Rix
|
292969a5df
|
Reformat decoratorWithAlgebra’s signature.
|
2017-04-24 15:38:22 -04:00 |
|
Rob Rix
|
0a6555351b
|
📝 decoratorWithAlgebra.
|
2017-04-24 15:35:47 -04:00 |
|
Rob Rix
|
5201cb3f46
|
📝 FAlgebra.
|
2017-04-24 15:35:19 -04:00 |
|
Rob Rix
|
07c13859e2
|
Define a function lifting an algebra into a decorator.
|
2017-04-24 15:34:28 -04:00 |
|
Rob Rix
|
8b7d416164
|
Simplify the cyclomatic complexity computation to just the value.
|
2017-04-24 15:28:21 -04:00 |
|
Rob Rix
|
c4393ace0b
|
Define a cyclomatic complexity decorator.
|
2017-04-24 15:23:21 -04:00 |
|
Rob Rix
|
90737f6e5f
|
Generalize identifiable over the union.
|
2017-04-24 15:07:19 -04:00 |
|
Rob Rix
|
76513638a6
|
Merge branch 'master' into clean-parse-and-diff-interface
|
2017-04-24 14:56:06 -04:00 |
|
Rob Rix
|
9e34c589c0
|
Merge branch 'master' into a-la-carte-folds
|
2017-04-24 14:55:49 -04:00 |
|
Rob Rix
|
fb477828e6
|
📝 advanceState.
|
2017-04-24 13:57:41 -04:00 |
|
Rob Rix
|
a7b47952eb
|
📝 AssignmentState itself.
|
2017-04-24 13:55:12 -04:00 |
|
Rob Rix
|
8caea50b14
|
📝 AssignmentState’s fields.
|
2017-04-24 13:54:33 -04:00 |
|
Rob Rix
|
806aa944d0
|
SourcePos is 1-indexed in both line and column.
|
2017-04-24 13:51:08 -04:00 |
|
Rob Rix
|
3705f960f4
|
Reformat AssignmentState across several lines.
|
2017-04-24 13:47:21 -04:00 |
|
Rob Rix
|
d3517ab60f
|
Methods are identifiable.
|
2017-04-24 13:41:20 -04:00 |
|
Rob Rix
|
54108f0019
|
Classes are identifiable.
|
2017-04-24 13:41:16 -04:00 |
|
Rob Rix
|
d5b512d094
|
Stub in a function producing the list of identifiable subterms of a term.
|
2017-04-24 13:38:55 -04:00 |
|
Rob Rix
|
d66e425e56
|
Derive Functor and Traversable instances for à la carte syntax types.
|
2017-04-24 13:38:21 -04:00 |
|
Rob Rix
|
0ad31e7887
|
Define Traversable instances for Unions.
|
2017-04-24 13:37:59 -04:00 |
|
Rob Rix
|
09d4dbcb8e
|
Define Functor instances for unions of Functors.
|
2017-04-24 13:29:10 -04:00 |
|
Rob Rix
|
3dd4d12af8
|
Define the strengthening of a single-member union.
|
2017-04-24 13:28:56 -04:00 |
|
Timothy Clem
|
c1be28de3b
|
Switch over to mapConcurrently in Command.Git too
|
2017-04-24 09:59:58 -07:00 |
|
Rob Rix
|
cbe44c66e7
|
Merge branch 'master' into run-assignment-with-source
|
2017-04-24 12:53:45 -04:00 |
|
Timothy Clem
|
5181a11455
|
Use StandaloneDeriving for Arguments
|
2017-04-24 09:42:58 -07:00 |
|
Timothy Clem
|
196a0d28e8
|
Not using ViewPatterns here
|
2017-04-24 09:33:12 -07:00 |
|
Timothy Clem
|
77b9b6f909
|
Few doc fixes
|
2017-04-24 09:17:28 -07:00 |
|
Josh Vera
|
ed8b07e64b
|
Merge branch 'master' into clean-parse-and-diff-interface
|
2017-04-24 12:03:09 -04:00 |
|
Josh Vera
|
afc4790383
|
Merge branch 'master' into rws-effect
|
2017-04-24 11:53:26 -04:00 |
|
Timothy Clem
|
5b3ea87e57
|
Revert "Write my own takeExtension"
This reverts commit c18cabe7b583e039d96138b8b219bf99c52dd995.
|
2017-04-24 08:12:53 -07:00 |
|
Timothy Clem
|
56f9a7ba40
|
Change naming to diffBlobPair(s)
|
2017-04-24 07:46:32 -07:00 |
|
Timothy Clem
|
bb71fd7b71
|
s/renderAsync/renderConcurrently
|
2017-04-24 07:37:41 -07:00 |
|
Timothy Clem
|
d38724f39b
|
Write my own takeExtension
|
2017-04-24 07:37:32 -07:00 |
|
Rob Rix
|
5500b7534e
|
term can match empty lists by taking the current offset.
|
2017-04-24 10:19:15 -04:00 |
|
Rob Rix
|
59b7478caf
|
📝 AST.
|
2017-04-24 10:18:42 -04:00 |
|
Rob Rix
|
7868979cee
|
📝 Node.
|
2017-04-24 10:18:02 -04:00 |
|
Rob Rix
|
ec65a199dc
|
Define a location combinator.
|
2017-04-24 10:17:10 -04:00 |
|
Rob Rix
|
25ebe64d83
|
Define state assignments.
|
2017-04-24 10:01:09 -04:00 |
|
Rob Rix
|
96affb1f05
|
Carry the current position through assignment.
|
2017-04-24 09:53:30 -04:00 |
|
Timothy Clem
|
d4933b3aaf
|
Easier way to get output dir
|
2017-04-21 18:07:16 -07:00 |
|
Timothy Clem
|
643a7a3581
|
Docs, order import, internal functions at the bottom
|
2017-04-21 18:06:56 -07:00 |
|
Timothy Clem
|
44dfa16bb5
|
Remove debug even tracing
|
2017-04-21 17:55:07 -07:00 |
|
Timothy Clem
|
779b6afde2
|
No longer need printTerms
|
2017-04-21 17:54:58 -07:00 |
|
Timothy Clem
|
190dca165d
|
Turn on debug flag to send sourceText output for parse again
|
2017-04-21 17:46:59 -07:00 |
|
Timothy Clem
|
ca89087e1d
|
Extract out a common async render and keep async stuff in Semantic
|
2017-04-21 16:41:46 -07:00 |
|
Timothy Clem
|
bd019104a8
|
First pass at parallel rendering!
|
2017-04-21 16:24:17 -07:00 |
|
Timothy Clem
|
980333f40d
|
WIP - optimize concurrency
|
2017-04-21 15:40:37 -07:00 |
|
Timothy Clem
|
d5b9463a56
|
Collapse Parser.Language back into Semantic
|
2017-04-21 14:20:30 -07:00 |
|
Timothy Clem
|
f51798e4c8
|
Turn parseBlob tests back on in new Spec
|
2017-04-21 14:12:00 -07:00 |
|
Timothy Clem
|
78d376e256
|
Pair down command to just fs and git operations
|
2017-04-21 13:56:19 -07:00 |
|
Rob Rix
|
718ef34e71
|
assignAllFrom takes an AssignmentState.
|
2017-04-21 16:53:43 -04:00 |
|
Rob Rix
|
f09e0ba5cc
|
Assign terms annotated with ranges & source spans.
|
2017-04-21 16:38:51 -04:00 |
|
Rob Rix
|
b99944556c
|
Merge branch 'master' into run-assignment-with-source
|
2017-04-21 16:18:16 -04:00 |
|
Rob Rix
|
65176ffa6b
|
Advance the state using a helper function.
|
2017-04-21 13:52:49 -04:00 |
|
Rob Rix
|
5643a0674d
|
Define selectors for AssignmentState.
|
2017-04-21 13:48:55 -04:00 |
|
Rob Rix
|
626281b68b
|
Define a type for assignments’ state.
|
2017-04-21 13:45:27 -04:00 |
|
Rob Rix
|
cfe0709649
|
Rename rest to nodes.
This clarifies that pure assignments don’t advance the state.
|
2017-04-21 13:42:12 -04:00 |
|
Rob Rix
|
92a3a9c95f
|
Advance the source.
|
2017-04-21 13:41:42 -04:00 |
|
Rob Rix
|
e3192150e2
|
Define take & drop functions for Source.
|
2017-04-21 13:36:41 -04:00 |
|
Rob Rix
|
94452afacc
|
Return a slice of the source.
|
2017-04-21 13:31:40 -04:00 |
|
Rob Rix
|
fdde8b0255
|
Don’t bind node fields explicitly.
|
2017-04-21 13:28:11 -04:00 |
|
Rob Rix
|
27db847b06
|
Rename node to subtree.
|
2017-04-21 13:27:44 -04:00 |
|
Rob Rix
|
4aea07f87f
|
Pass the offset through assignments.
|
2017-04-21 13:26:22 -04:00 |
|
Timothy Clem
|
e9316f4026
|
Use new diffBlobs interface in cmdline program
|
2017-04-21 10:25:47 -07:00 |
|
Rob Rix
|
35e3643724
|
Running an assignment returns the Source.
|
2017-04-21 12:19:50 -04:00 |
|
Rob Rix
|
41848c415d
|
Revert "Define a Conjunctive typeclass."
This reverts commit 4beaa5a9ae6bb16c4d2d896026f0dc267c1f772d.
|
2017-04-21 12:17:49 -04:00 |
|
Rob Rix
|
a79d96d942
|
Revert "Give default definitions for &> and <&."
This reverts commit 9c12b1b63c2f19616e36687883fbcad192efc0b0.
|
2017-04-21 12:17:48 -04:00 |
|
Rob Rix
|
85ab76a7b0
|
Revert "Define a liftC2 method."
This reverts commit 5d0f44702e940800eca706e7a060586a9c92f8b7.
|
2017-04-21 12:17:46 -04:00 |
|
Rob Rix
|
0991f0c8c1
|
Revert "Give a default definition for <&> in terms of liftC2."
This reverts commit 0a6bfa25ea2801aa7b7c2c19f1fcabf63bddaccf.
|
2017-04-21 12:17:45 -04:00 |
|
Rob Rix
|
b4a8336beb
|
Revert "Describe the minimal instance."
This reverts commit 4a8a676f8faafd0f60769a20068512937181f7e4.
|
2017-04-21 12:17:43 -04:00 |
|
Rob Rix
|
639fc824aa
|
Revert "Define example instances of Conjunctive for Maybe and []."
This reverts commit 05dea7751da8699f6eeb53bb00dd5f40fc49b775.
|
2017-04-21 12:17:02 -04:00 |
|
Rob Rix
|
d5f1fb93ef
|
Define example instances of Conjunctive for Maybe and [].
|
2017-04-21 12:11:27 -04:00 |
|
Rob Rix
|
0c75affa75
|
Describe the minimal instance.
|
2017-04-21 11:50:21 -04:00 |
|
Rob Rix
|
9ba51f537a
|
Give a default definition for <&> in terms of liftC2.
|
2017-04-21 11:50:10 -04:00 |
|
Rob Rix
|
2119f3b7ed
|
Define a liftC2 method.
|
2017-04-21 11:48:29 -04:00 |
|
Rob Rix
|
340a58e44e
|
Give default definitions for &> and <&.
|
2017-04-21 11:44:23 -04:00 |
|
Rob Rix
|
22177b0940
|
Define a Conjunctive typeclass.
|
2017-04-21 11:44:16 -04:00 |
|
Rob Rix
|
9acedae624
|
Simplify the definition of annotation .
|
2017-04-21 11:20:47 -04:00 |
|
Rob Rix
|
bcceb1c5a8
|
Define a smart constructor for Get.
|
2017-04-21 11:20:19 -04:00 |
|
Rob Rix
|
cf8e59635c
|
Define Symbol, Range, and SourceSpan in terms of Get.
|
2017-04-21 11:18:09 -04:00 |
|
Rob Rix
|
9b9713d317
|
Define a Get rule to produce the current symbol (soon, node).
|
2017-04-21 10:56:43 -04:00 |
|
Rob Rix
|
f7e0938c0c
|
Add an annotation combinator.
|
2017-04-21 10:39:53 -04:00 |
|
Rob Rix
|
2c16ea9b17
|
term takes its annotation.
|
2017-04-21 10:38:17 -04:00 |
|
Rob Rix
|
ba73178532
|
Define combinators producing the range and source span of the current node.
|
2017-04-21 10:21:25 -04:00 |
|
Rob Rix
|
364c9b1113
|
Correct the docs of symbol .
|
2017-04-21 10:13:35 -04:00 |
|
Rob Rix
|
0e2559db0f
|
Reintroduce Node/AST type synonyms.
|
2017-04-21 10:08:19 -04:00 |
|
Rob Rix
|
8cc3da0de3
|
Assignment receives source spans.
|
2017-04-21 09:55:19 -04:00 |
|
Rob Rix
|
ab059af248
|
Assignment receives ranges.
|
2017-04-21 09:54:17 -04:00 |
|
Rob Rix
|
2f696ef88d
|
Pass the symbol in a record.
|
2017-04-21 09:52:23 -04:00 |
|
Rob Rix
|
b5575d7298
|
📝 parseRubyToAST.
|
2017-04-21 09:44:05 -04:00 |
|
Rob Rix
|
a29b7b6f2b
|
Return the Source alongside the AST.
This makes for easier chaining.
|
2017-04-21 09:43:29 -04:00 |
|
Rob Rix
|
9a0361d74d
|
Pass source when running assignments.
|
2017-04-21 09:40:17 -04:00 |
|
Timothy Clem
|
19e87dd523
|
Put both diff and parse rendering back together
|
2017-04-20 15:13:28 -07:00 |
|
Rob Rix
|
9a42d8f4c8
|
Replace Node with its symbol, dropping the source.
|
2017-04-20 15:53:01 -04:00 |
|
Rob Rix
|
33f41f5bf0
|
Merge branch 'master' into rws-effect
|
2017-04-20 15:26:11 -04:00 |
|
Rob Rix
|
085839aabf
|
Merge branch 'master' into ruby-assignment-a-la-carte
|
2017-04-20 15:25:34 -04:00 |
|
Timothy Clem
|
389bfaf220
|
WIP - new renderer achitecture
|
2017-04-20 11:00:02 -07:00 |
|
Rob Rix
|
ccf9fa9ee2
|
Fix a typo.
|
2017-04-20 13:27:53 -04:00 |
|
Timothy Clem
|
5870b33b51
|
WIP - parse tree renderer
|
2017-04-19 18:27:36 -07:00 |
|
Timothy Clem
|
04f7f4b1f5
|
Start to build new interface for semantic
|
2017-04-19 16:33:27 -07:00 |
|
Timothy Clem
|
8eb4d436e0
|
s/Semantic/SemanticCmdLine
|
2017-04-19 14:22:24 -07:00 |
|
Rob Rix
|
ff6ce916eb
|
Assign unless modifiers.
|
2017-04-19 16:54:03 -04:00 |
|
Rob Rix
|
25379d71aa
|
if/unless can omit the else block.
|
2017-04-19 16:53:09 -04:00 |
|
Rob Rix
|
1d2c924088
|
🔥 expr.
|
2017-04-19 16:28:51 -04:00 |
|
Rob Rix
|
c83b75f5b4
|
Assign unless statements.
|
2017-04-19 16:27:59 -04:00 |
|
Rob Rix
|
39657d07ea
|
Define syntax for boolean negation.
|
2017-04-19 16:24:02 -04:00 |
|
Rob Rix
|
2a4ab71d86
|
Assign modifier if statements.
|
2017-04-19 16:19:47 -04:00 |
|
Rob Rix
|
74884ec812
|
Handle scoped class names.
|
2017-04-19 16:13:07 -04:00 |
|
Rob Rix
|
af1be07b5f
|
Assign superclasses.
|
2017-04-19 16:05:49 -04:00 |
|
Rob Rix
|
f97ed6cc37
|
Rename Content to Source.
|
2017-04-19 16:00:44 -04:00 |
|
Rob Rix
|
0ebf786747
|
term provides the annotation.
|
2017-04-19 15:00:21 -04:00 |
|
Rob Rix
|
aa2a1d7d2c
|
Assign break & continue statements.
|
2017-04-19 14:03:14 -04:00 |
|
Rob Rix
|
777a4a0392
|
Define syntax for continue statements.
|
2017-04-19 14:02:19 -04:00 |
|
Rob Rix
|
95aa88969e
|
Define syntax for break statements.
|
2017-04-19 13:59:46 -04:00 |
|
Rob Rix
|
c27b14d9d6
|
Factor out the scope exit statements.
|
2017-04-19 13:58:42 -04:00 |
|
Rob Rix
|
6e73ca391d
|
Return/Yield values are in an ArgumentList.
|
2017-04-19 13:57:09 -04:00 |
|
Rob Rix
|
4aeb7b1483
|
Represent the absence of optional syntax with the Empty constructor.
|
2017-04-19 13:49:36 -04:00 |
|
Rob Rix
|
d0e474168d
|
Assign integer literals.
|
2017-04-19 13:37:45 -04:00 |
|
Rob Rix
|
c589e229ee
|
Rename rule to symbol.
|
2017-04-19 13:11:09 -04:00 |
|
Rob Rix
|
996fa27530
|
Use the usual Term synonym.
|
2017-04-19 13:06:06 -04:00 |
|
Rob Rix
|
e4f6084183
|
Rename Program to Term.
|
2017-04-19 13:04:31 -04:00 |
|
Rob Rix
|
6d10209545
|
Assign into a cofree structure.
|
2017-04-19 13:04:07 -04:00 |
|
Rob Rix
|
437f240929
|
free/runFree no longer require Functor instances.
|
2017-04-19 12:59:19 -04:00 |
|
Rob Rix
|
46b8a4d3fd
|
cofree/runCofree no longer require Functor instances.
|
2017-04-19 12:57:48 -04:00 |
|
Rob Rix
|
92dc311ad5
|
Export InUnion.
|
2017-04-19 12:52:24 -04:00 |
|
Rob Rix
|
27b1eb794c
|
Rename emb/proj to inj/prj.
|
2017-04-19 12:52:16 -04:00 |
|
Timothy Clem
|
18e81adb14
|
Start to make a clean delineation about command function that use git or the fs
|
2017-04-19 09:45:11 -07:00 |
|
Timothy Clem
|
eb9547fb25
|
Tease apart file reading and transcoding
|
2017-04-19 09:12:19 -07:00 |
|
Rob Rix
|
c7186b8730
|
Use boolean literal constants.
|
2017-04-19 11:37:04 -04:00 |
|
Rob Rix
|
404bc3fc2f
|
Define true and false constants.
|
2017-04-19 11:36:34 -04:00 |
|
Rob Rix
|
69b0eeb18a
|
Assign elsif blocks correctly.
|
2017-04-19 10:16:08 -04:00 |
|
Rob Rix
|
e9a4f9e3a1
|
Assign else blocks correctly.
|
2017-04-19 10:13:05 -04:00 |
|
Rob Rix
|
ae6033e70b
|
Return/yield statements always wrap their children (even if empty).
|
2017-04-18 16:21:13 -04:00 |
|
Rob Rix
|
b6f96617d7
|
Parse many statements.
|
2017-04-18 16:15:17 -04:00 |
|
Rob Rix
|
3c1180f758
|
Define a Show1 instance for Result.
|
2017-04-18 16:12:20 -04:00 |
|
Rob Rix
|
67ec37ea3f
|
Sort imports.
|
2017-04-18 15:56:16 -04:00 |
|
Rob Rix
|
4a29eed58e
|
Export Result.
|
2017-04-18 10:39:24 -04:00 |
|
joshvera
|
a7293dcdc0
|
Move effectful functions down
|
2017-04-14 14:43:48 -04:00 |
|
Rob Rix
|
572fbbeb2a
|
Assign boolean literals.
|
2017-04-13 15:48:28 -04:00 |
|
Rob Rix
|
94cb31e95e
|
Add a bunch more literals.
|
2017-04-13 15:43:45 -04:00 |
|
Rob Rix
|
0a9b9ddb8e
|
Rename HashLiteral to Hash.
|
2017-04-13 15:42:10 -04:00 |
|
Rob Rix
|
645fda316f
|
Rename ArrayLiteral to Array.
|
2017-04-13 15:42:03 -04:00 |
|
Rob Rix
|
ed668490a8
|
Methods can be non-empty too.
|
2017-04-13 13:31:11 -04:00 |
|
joshvera
|
63f1cc0d14
|
Cleanup type signatures
|
2017-04-13 12:49:43 -04:00 |
|
joshvera
|
33fbdde73b
|
Merge rws' into rws
|
2017-04-13 12:33:26 -04:00 |
|
joshvera
|
982bc83cd2
|
Merge remote-tracking branch 'origin/master' into rws-effect
|
2017-04-13 12:30:15 -04:00 |
|
Rob Rix
|
5bac4505c9
|
Return & yield may not take parameters.
|
2017-04-13 12:01:53 -04:00 |
|
Rob Rix
|
00b1aed9a1
|
Merge branch 'master' into ruby-production-type
|
2017-04-13 11:57:14 -04:00 |
|
Rob Rix
|
4921dd346f
|
📝 Empty.
|
2017-04-13 11:55:13 -04:00 |
|
Rob Rix
|
9abd51cefa
|
Define Empty syntax.
|
2017-04-13 11:47:58 -04:00 |
|
Rob Rix
|
731c7a5c1d
|
Move Syntax into the Program type synonym.
|
2017-04-13 11:18:10 -04:00 |
|
Rob Rix
|
88c4081e0d
|
Assign return & yield statements.
|
2017-04-13 11:12:11 -04:00 |
|
Rob Rix
|
3b9c53c4c2
|
Skip anonymous nodes at the end of input.
|
2017-04-13 11:02:23 -04:00 |
|
Rob Rix
|
1943d62dbf
|
Extract the anonymous skipping function to the top level.
|
2017-04-13 11:02:13 -04:00 |
|
Rob Rix
|
a0322cf652
|
Clearer error message for children assignment.
|
2017-04-13 10:50:00 -04:00 |
|
Rob Rix
|
3de5f3aaf9
|
Pull out the function to skip anonymous nodes.
|
2017-04-13 10:49:08 -04:00 |
|
Rob Rix
|
2e7627184a
|
Clearer error messaging for content assignment.
|
2017-04-13 10:48:39 -04:00 |
|
Rob Rix
|
d3f91d2f96
|
Clearer error messaging for rule assignment.
|
2017-04-13 10:47:22 -04:00 |
|
Rob Rix
|
08b93f2dd0
|
Methods may not have bodies.
|
2017-04-13 10:40:10 -04:00 |
|
Rob Rix
|
309636dc2c
|
Skip all but regular nodes.
|
2017-04-13 10:34:37 -04:00 |
|
Rob Rix
|
86f5e21529
|
Define field selectors for Rose.
|
2017-04-13 10:33:21 -04:00 |
|
Rob Rix
|
666e0c025f
|
Assignment produces a Result.
|
2017-04-13 09:36:01 -04:00 |
|
Rob Rix
|
c936064e1b
|
Define a Result type.
|
2017-04-13 09:35:34 -04:00 |
|
Rob Rix
|
e598e460fa
|
Assigning all must exhaust the input nodes.
|
2017-04-13 09:03:47 -04:00 |
|
Timothy Clem
|
e628e15016
|
Just refer to it as 'semantic' in version string
|
2017-04-12 13:33:50 -07:00 |
|
Rob Rix
|
ae5fd2001a
|
Simplify the top-level Ruby assignment.
|
2017-04-12 16:28:43 -04:00 |
|
Rob Rix
|
c46e0904d1
|
Slice in linear time.
|
2017-04-12 16:18:26 -04:00 |
|
Timothy Clem
|
da90d950e9
|
Extra whitespace
|
2017-04-12 13:12:08 -07:00 |
|
Rob Rix
|
da022960f4
|
toAST unfolds the whole tree.
|
2017-04-12 16:02:12 -04:00 |
|
Timothy Clem
|
3704773965
|
Merge remote-tracking branch 'origin/master' into subparsers
|
2017-04-12 12:55:11 -07:00 |
|
Rob Rix
|
12eca8a3b0
|
Structure Ruby AST importing as an unfold(ish).
|
2017-04-12 15:03:35 -04:00 |
|
Rob Rix
|
6abce74472
|
Derive Foldable & Traversable instances for RoseF.
|
2017-04-12 15:02:47 -04:00 |
|
joshvera
|
97549660af
|
use foldl' in insertMapped and deleteRemaining
|
2017-04-12 14:46:27 -04:00 |
|
Rob Rix
|
2f252e46b0
|
Export RoseF.
|
2017-04-12 14:39:07 -04:00 |
|
Rob Rix
|
fb4415d5dc
|
Define Recursive & Corecursive instances for Rose.
|
2017-04-12 14:37:05 -04:00 |
|
Rob Rix
|
e50ec88a01
|
Export parseRubyToAST.
|
2017-04-12 14:32:32 -04:00 |
|
Rob Rix
|
ce075494cf
|
Stub in a function to produce AST for Ruby.
|
2017-04-12 14:31:55 -04:00 |
|
joshvera
|
2af05a1b0f
|
Revert to using State
|
2017-04-12 12:14:36 -04:00 |
|
Rob Rix
|
eb8d0e3c19
|
Add a go syntax module & grammar datatype.
|
2017-04-12 10:53:04 -04:00 |
|
Rob Rix
|
be9c4a42ff
|
Add a typescript syntax module & grammar datatype.
|
2017-04-12 10:51:31 -04:00 |
|
joshvera
|
502255b732
|
Let's see if foldr works
|
2017-04-11 18:33:59 -04:00 |
|
joshvera
|
95beaf8446
|
Move q application out
|
2017-04-11 18:23:32 -04:00 |
|
joshvera
|
1a78d5e1ea
|
Rename k to q
|
2017-04-11 18:22:24 -04:00 |
|
joshvera
|
630c607f2b
|
Remove pure
|
2017-04-11 18:22:16 -04:00 |
|
joshvera
|
5a8217f06b
|
Revert to foldl
|
2017-04-11 17:10:25 -04:00 |
|
joshvera
|
00f88e540f
|
Reverse the order of insertMapped arguments
|
2017-04-11 17:10:08 -04:00 |
|
joshvera
|
a418aa43c0
|
Remove GAlign constraint
|
2017-04-11 17:09:43 -04:00 |
|
joshvera
|
e1a795a6fe
|
Allow RWS to be interleaved with other effects
|
2017-04-11 16:29:47 -04:00 |
|
Rob Rix
|
bacba50ec5
|
Define the Grammar datatype using TemplateHaskell.
|
2017-04-11 11:50:59 -04:00 |
|
joshvera
|
9ec24e646c
|
Merge remote-tracking branch 'origin/master' into rws-effect
|
2017-04-11 11:27:03 -04:00 |
|
Timothy Clem
|
9ed78b0202
|
No need for args variable
|
2017-04-10 17:14:30 -07:00 |
|
Timothy Clem
|
4227f63065
|
Don't want to actually print out args
|
2017-04-10 17:13:04 -07:00 |
|
Timothy Clem
|
6e3af1b75f
|
SemanticDiff.hs => Semantic.hs and smoke test specs
|
2017-04-10 17:10:34 -07:00 |
|
Timothy Clem
|
5b1d104383
|
Clarify naming a bit
|
2017-04-10 16:07:00 -07:00 |
|
Timothy Clem
|
e9edb42e53
|
Remove render formats and use render/encode functions directly
|
2017-04-10 15:10:24 -07:00 |
|
Rob Rix
|
000fa34a50
|
s/Switch/Match/.
|
2017-04-10 16:44:57 -04:00 |
|
Rob Rix
|
e50ebc2765
|
Use a single code path for assigning all nodes in a list.
|
2017-04-10 16:37:00 -04:00 |
|
Rob Rix
|
aa0d65747f
|
Make the Eq & Eq1 instances agree.
|
2017-04-10 16:09:40 -04:00 |
|
Rob Rix
|
848f0759bb
|
Explicit exports.
|
2017-04-10 16:02:33 -04:00 |
|
Timothy Clem
|
a03f0da106
|
Command.Parse doesn't need to know about Arguments
|
2017-04-10 11:28:09 -07:00 |
|
Rob Rix
|
5938d21653
|
Children assignments run their sub-assignment and then yield.
|
2017-04-10 11:24:20 -04:00 |
|
Rob Rix
|
3684872e32
|
Tighten up rule assignment with guard .
|
2017-04-10 11:14:04 -04:00 |
|
Rob Rix
|
52263c7aa4
|
Reformat children assignment evaluation.
|
2017-04-08 09:12:42 -04:00 |
|
Rob Rix
|
755b448ac5
|
Show assignments after effects.
|
2017-04-07 18:31:37 -04:00 |
|
joshvera
|
2cff2caf68
|
Use the RWS effect
|
2017-04-07 17:59:45 -04:00 |
|
joshvera
|
013e7660a8
|
Move the rest of rws to an effect
|
2017-04-07 17:48:14 -04:00 |
|
Rob Rix
|
b4847b0a1c
|
Class scope can have multiple independent entries.
|
2017-04-07 16:42:15 -04:00 |
|
Rob Rix
|
f73542ea8e
|
Define a Show1 instance for AssignmentF.
|
2017-04-07 16:42:09 -04:00 |
|