refactor: avoid Bwd
in within
and brackets(Worker)
#72
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I had a bit of a go at #68 ;)...
The Bwd is just building up a return value; if we just use the stack instead (i.e.
<$>
) then we avoid having to reverse the list. This simplifieswithin
a bit (no need to passacc
), and simplifiesbracketsWorker
substantially (makingbrackets
==bracketsWorker
).Individual commits compile so you can see the steps.
It's a shame not to be able to combine
within
andbrackets
because they are very very similar (the| Just b <- opener (_tok t) = do
case in particular); I tried using aMaybe (FC, BracketType)
forctx
and that almost did it but doesn't copy withwithin
needing extra return values :-(. (One could have aMaybe
return value, and "contract" that Just-in-means-Just-out, I suppose; but really you'd need a type class which is gonna be tooooo much boilerplate)