1. 14 Mar, 2019 1 commit
  2. 09 Nov, 2018 1 commit
  3. 25 Oct, 2018 2 commits
  4. 20 Oct, 2018 1 commit
  5. 22 Aug, 2018 1 commit
    • Hans-Peter Deifel's avatar
      Use approximate comparison for doubles · 64526ba0
      Hans-Peter Deifel authored
      There has been a long-standing bug, that we only used exact comparison
      for IEEE floating point values. This patch implements a newtype
      ADouble that wraps `Double` and implements `Eq` approximately using
      the library `ieee754`.
      64526ba0
  6. 02 Aug, 2018 1 commit
  7. 26 Jul, 2018 2 commits
    • Hans-Peter Deifel's avatar
      Speed up parsing of character symbols · 0fe8225a
      Hans-Peter Deifel authored
      This makes lexer combinators like `colon` or `parens` a little faster,
      which adds up for large inputs.
      0fe8225a
    • Hans-Peter Deifel's avatar
      Clean and speed up whitespace parsing · 7ffafe17
      Hans-Peter Deifel authored
      This cleans up newline handling in the whitespace parser:
      
      Newlines are not treated the same as other whitespace any more and are
      only allowed after the functor expression and between individual
      morphism points.
      
      By doing this, we get a less surprising grammar for parsing ("x: { y:"
      would never try to parse the "y:" as the start of a new definition)
      and can speed up the hot path (a single space character) considerably.
      7ffafe17
  8. 25 Jul, 2018 3 commits
    • Hans-Peter Deifel's avatar
      Speed up Lexer.float by over 300% · 73373d6b
      Hans-Peter Deifel authored
      By reimplementing the float parser, we can get a considerable speedup.
      This is due to the fact that we don't handle scientific notation among
      other things.
      73373d6b
    • Hans-Peter Deifel's avatar
      Speed up Lexer.decimal · d45c15d0
      Hans-Peter Deifel authored
      By reimplementing the version from Megaparsec, but specializing to Int
      and Text, we can get 6x speedups in some cases.
      d45c15d0
    • Hans-Peter Deifel's avatar
      Speed up Lexer.signed · b91c2ae9
      Hans-Peter Deifel authored
      `L.signed L.decimal` now has minimal overhead over L.decimal on it's
      own. We did sacrifice the possibility to write a (redundant) `+` sign
      or white space between the minus and the number.
      b91c2ae9
  9. 23 Jul, 2018 2 commits
  10. 21 Jul, 2018 1 commit
  11. 13 Jul, 2018 3 commits
  12. 10 Jul, 2018 1 commit
    • Hans-Peter Deifel's avatar
      Generalize parser types for lexer · 2f63d91c
      Hans-Peter Deifel authored
      Instead of expecting `ParserT` to be at the top of the monad stack,
      they now only assume that the monad satisfies the `MonadParser`
      constraint, allowing to use them unlifted in `StateT Parser`
      2f63d91c
  13. 09 Jul, 2018 2 commits
  14. 08 Jul, 2018 1 commit
  15. 07 Jul, 2018 1 commit
  16. 25 Jun, 2018 1 commit
    • Hans-Peter Deifel's avatar
      lexer: Make names lexemes · 62a88a36
      Hans-Peter Deifel authored
      This means that "names" (e.g node labels for FixedProduct) are now
      parsed with the `lexeme` combinator (which consumes trailing
      whitespace).
      62a88a36
  17. 11 Jun, 2018 1 commit
    • Hans-Peter Deifel's avatar
      Prettify functor expressions · e91b4e7b
      Hans-Peter Deifel authored
      This switches the parser for functor expressions (not yet morphisms)
      from a YAML based one to a custom one, making those expressions much
      more readable and giving individual functors greater flexibility to
      define their own syntax.
      e91b4e7b