- [ ] https://github.com/nponeccop/HNC/blob/master/HN/Optimizer/ExpressionRewriter.hs#L23 think if `composeRewrites` can be optimized - [ ] https://github.com/nponeccop/HNC/blob/master/HN/Optimizer/Utils.hs#L31 See if anything can be done with repeated `Nothing/Just` patterns (common code or Monad/Alternative) - [ ] https://github.com/nponeccop/HNC/blob/master/HN/Optimizer/Utils.hs#L52 See if fusing `concatMap` and `foldr` makes it simpler - [ ] https://github.com/nponeccop/HNC/blob/master/HN/MilnerTools.hs#L53 Convert `mrevert` to recursion schemes - [ ] https://github.com/nponeccop/HNC/blob/master/HN/MilnerTools.hs#L31 Use execStateT/evalStateT instead of runStateT to avoid `fst` - [ ] https://github.com/nponeccop/HNC/blob/master/HN/MilnerTools.hs#L33 Use recursion schemes for `convert`. Note that you'll have to use `sequenceM` - [ ] https://github.com/nponeccop/HNC/blob/master/HN/SplExport.hs#L31 Use `zipWith` to avoid two applications of `map` - [x] https://github.com/nponeccop/HNC/blob/master/HN/Visualise.hs#L16 Use LambdaCase (2 cases) - [ ] Avoid `letWhere`. Directly pattern-match on `letIn` instead https://github.com/nponeccop/HNC/blob/master/HN/Visualise.hs#L12 - [ ] Eta-reduce (3 cases): https://github.com/nponeccop/HNC/blob/master/HN/Visualise.hs#L8 - [ ] Recursion schemes: https://github.com/nponeccop/HNC/blob/master/HN/Visualise.hs#L18
composeRewritescan be optimizedNothing/Justpatterns (common code or Monad/Alternative)concatMapandfoldrmakes it simplermrevertto recursion schemesfstconvert. Note that you'll have to usesequenceMzipWithto avoid two applications ofmapletWhere. Directly pattern-match onletIninstead https://github.com/nponeccop/HNC/blob/master/HN/Visualise.hs#L12