lean4-htt/library/init/lean/parser
Leonardo de Moura 4cfe44bed0 feat(library/compiler/specialize): add nospecialize attribute
@kha I had to add this attribute because the specializer was generated
many specialization candidates for functions that take `[has_tokens ...]`
as an argument. Moreover, these candidates had a lot of
dependencies. I am trying to workaround this issue by marking the
instances with the new attribute `[nospecialize]`.
I did not mark instances created by `[derive]`. It is quite tedious to
do it.

BTW, when I was investigating the problem I stumbled at `node.view`.
Its type is:
```
node.view :
  Π {α : Type} {m : Type → Type} [_inst_1 : monad m] [_inst_2 : monad_except (parsec.message syntax) m]
  [_inst_3 : monad_parsec syntax m] [_inst_4 : alternative m] (k : syntax_node_kind) (rs : list (m syntax))
  [i : @has_view syntax_node_kind k α], @has_view (m syntax) (@node m _inst_1 _inst_2 _inst_3 _inst_4 k rs) α
```
This looks wrong: the view depends on `[monad_parsec syntax m]`

We should also make sure definitions do not have unnecessary type
class instances. Otherwise, we will put additional stress on the code
specializer. One option is to change the frontend and filter unused
instances.
2018-10-15 17:44:26 -07:00
..
basic.lean feat(library/compiler/specialize): add nospecialize attribute 2018-10-15 17:44:26 -07:00
combinators.lean feat(library/compiler/specialize): add nospecialize attribute 2018-10-15 17:44:26 -07:00
command.lean feat(library/init/lean): even more core.lean progress 2018-10-03 16:00:08 -07:00
declaration.lean fix(library/init/lean/parser/term): rename term.ident to ident_univs to remove confusion with ident 2018-10-13 08:11:36 -07:00
identifier.lean chore(library): remove >>, we should use *> 2018-09-12 17:31:21 -07:00
level.lean chore(library/init/lean/parser/level): typo 2018-10-12 11:56:34 -07:00
module.lean fix(library/init/lean/elaborator): check for and consume end of input 2018-10-03 16:00:08 -07:00
notation.lean refactor(library/init/lean/parser/token): remove weird with_source higher-order function 2018-10-05 08:52:04 -07:00
parsec.lean chore(library/init/lean/parser): add a few comments 2018-10-11 15:54:57 -07:00
pratt.lean perf(library/init/lean/parser/term): index term parsers by leading token 2018-10-15 10:21:08 +02:00
rec.lean feat(library/init/lean/elaborator): local notation 2018-10-03 16:00:08 -07:00
string_literal.lean feat(library/init/lean/parser/token): string literals 2018-10-13 08:11:36 -07:00
syntax.lean chore(library/init/lean/parser): add a few comments 2018-10-11 15:54:57 -07:00
term.lean perf(library/init/lean/parser/term): index term parsers by leading token 2018-10-15 10:21:08 +02:00
token.lean perf(library/init/lean/parser/term): index term parsers by leading token 2018-10-15 10:21:08 +02:00
trie.lean chore(library/init/lean/parser/trie): add debug print 2018-09-28 13:08:24 -07:00