resyntax
resyntax copied to clipboard
A Racket refactoring engine
Saw this code today: ```scheme (define (range min max . step*) (define step (if (null? step*) 1 (car step*))) (define (range* lst min max) (define max* (- max step)) (if...
If I `provide` an identifier multiple times, it could be replaced with a single occurrence of the identifier. Thus, ```` (provide a b a) ```` could be rewritten to just...
Racket makes it possible to scatter `provide` forms at the toplevel of a module. When this is actually done, though, I find it makes code harder to read. Ideally, I'd...
(Not sure if this is what resyntax should be doing, but it feels in scope to me; feel free to decline this if it's not what you have in mind.)...
Suggested sort order: by phase, then by base module name, then by submodule / only-in clauses. Path-based module names should go after collection-based module names.
Rust has a linting tool known as [Clippy](https://github.com/rust-lang/rust-clippy) that uses an interesting strategy for keeping track of and developing new lints. Clippy has several categories of lints, that can be...
Running `resyntax` on large codebases is slow, since it needs to macroexpand everything. But analysis of different modules is independent so it should be easy to parallelize the work using...
Adding new rules to Resyntax requires writing the rules in the [`resyntax/default-recommendations`](https://github.com/jackfirth/resyntax/tree/master/default-recommendations) folder. There's a few steps to this, some README docs in that folder would go a long way...
Will close #61 eventually.