lean4-htt/library/init
Leonardo de Moura f650a1b873 refactor(library/init/meta): avoid '_core' idiom using default parameters
I kept a few core methods (e.g., exact_core and apply_core). Reason:
if we use default parameters

    meta constant exact (e : expr) (md := semireducible) : tactic unit

then, we will not be able to write

    to_expr p >>= exact

The workaround is

    do t <- to_expr p, exact t

or
    to_expr p >>= (fun x, exact x)

One alternative is to change how we handle default parameters, and
eta-expand applications that involve default parameters.
We may also have an attribute [eta_expand]. Then

    attribute [eta_expand] foo

instructs the elaborator to automatically eta-expand foo-applications.
The attribute would give users more control, and avoid potential
performance problems. Without the attribute, then for every function
application the elaborator has to check the type and decide whether it
must be eta-expanded or not.

@gebner @kha What do you think?
2017-02-14 09:46:55 -08:00
..
algebra feat(norm_num): handle nat subtraction as a special case 2017-02-12 17:15:08 -08:00
category feat(library/init): add helper functions and instances 2017-02-13 14:53:32 -08:00
data feat(norm_num): handle nat subtraction as a special case 2017-02-12 17:15:08 -08:00
meta refactor(library/init/meta): avoid '_core' idiom using default parameters 2017-02-14 09:46:55 -08:00
native feat(frontends/lean, library/init): add 'thunk' gadget 2017-01-31 18:41:59 -08:00
.gdb_history chore(library, tests): switch to new attribute declaration syntax 2016-08-12 15:36:12 -07:00
cc_lemmas.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
classical.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
coe.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
core.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
default.lean feat(library/tactic/smt): perform "unit propagation" in the congruence closure module 2017-01-02 18:49:26 -08:00
function.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
funext.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
init.md chore(*.md): fix/remove broken links 2016-02-23 10:11:24 -08:00
logic.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
propext.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
util.lean refactor(library/init): provide more general try_for, and implement tactic.try_for using it 2017-02-12 12:15:19 -08:00
wf.lean feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00