Leonardo de Moura
9d1f4a4f29
chore(library/init/control/state): indentation consistency
2019-03-23 19:03:26 -07:00
Leonardo de Moura
930653f292
chore(library/init): Unit.star => Unit.unit
...
@kha Our stdlib is starting to match the names we used in our paper :)
2019-03-22 13:06:45 -07:00
Leonardo de Moura
87b066b87e
refactor(library/init): move function.lean definitions to core.lean
2019-03-22 09:33:10 -07:00
Leonardo de Moura
e31c3fde56
chore(library/init): remove dead code, lemma => theorem
2019-03-22 09:27:30 -07:00
Leonardo de Moura
dfe15cf743
refactor(library/init): use get and set for State EState and Ref
...
TODO: use the same naming convention for array reads and writes.
2019-03-21 16:34:32 -07:00
Leonardo de Moura
64a43e1976
chore(library/init/control/combinators): use namespace
2019-03-21 15:11:05 -07:00
Sebastian Ullrich
97e5aa2411
chore(library): s/Punit/PUnit/g etc
2019-03-21 15:06:45 -07:00
Leonardo de Moura
2be87ecd92
chore(library/init): Bool.tt => Bool.true and Bool.ff => Bool.false
2019-03-21 15:06:44 -07:00
Leonardo de Moura
f8113a01eb
chore(library): unit => Unit
2019-03-21 15:06:44 -07:00
Leonardo de Moura
62e6341014
chore(*): lowercase file names
2019-03-21 15:06:44 -07:00
Leonardo de Moura
2ea0baeb99
chore(library): use lowercase in imports
2019-03-21 15:06:44 -07:00
Leonardo de Moura
ac27bd092b
chore(*): small fixes
2019-03-21 15:06:44 -07:00
Leonardo de Moura
67fb78bb47
chore(*): renaming files
2019-03-21 15:06:44 -07:00
Sebastian Ullrich
beda5f5f43
chore(library): capitalize types and namespaces
2019-03-21 15:06:43 -07:00
Sebastian Ullrich
b939162168
chore(library): switch from snake_case to camelCase
2019-03-21 15:06:43 -07:00
Leonardo de Moura
36faa595f5
refactor(library/init): move inhabited (except ...) to except.lean
2019-03-18 16:48:58 -07:00
Leonardo de Moura
6d0ec3a8c9
refactor(library/init/io): implement io monad using estate monad
2019-03-16 15:34:58 -07:00
Leonardo de Moura
62284c7f39
feat(library/init/control): add estate monad
...
Optimized `except_t ε (state_t σ id) α`
2019-03-16 15:24:12 -07:00
Sebastian Ullrich
e0bbc094ad
chore(library/init): remove coroutines from stdlib
2019-03-08 15:34:17 +01:00
Sebastian Ullrich
1ad5450853
perf(library/init/control/coroutine): mark as [inline_as_reduce]
2019-03-06 17:30:20 +01:00
Leonardo de Moura
bfbfe94ac9
chore(library/init/control/default): add init.control.combinators
2019-02-07 09:12:53 -08:00
Sebastian Ullrich
d372139d27
feat(library/init/lean/elaborator): recursively elaborate lists of commands
...
This allows the expander to expand a single command to multiple commands
2018-12-07 10:29:58 +01:00
Sebastian Ullrich
7003fb6447
feat(library/init/lean/expander): command-level notations
2018-11-21 18:13:38 +01:00
Leonardo de Moura
38bc3beffb
fix(library/init): alternative instances
...
Both `alternative` and `monad` implement `applicative`. However,
their default implementations for `seq_right` and `seq_left` are
different. The `alternative` implementation uses the inefficient default
version for `seq_right` available at `applicative`:
```
(seq_right := λ α β a b, const α id <$> a <*> b)
```
instead of the more efficient
```
(seq_right := λ α β x y, x >>= λ _, y)
```
defined at `monad` using the `bind` operator.
This commit makes sure the `applicative` instances for `reader_t`,
`state_t`, `option` and `parsec_t` use the efficient version.
I found the problem when inspecting the generated code for:
```
def symbol (s : string) : parsec' unit :=
(str s *> whitespace) <?> ("'" ++ s ++ "'")
```
2018-10-17 14:25:50 -07:00
Leonardo de Moura
effccf9a6d
chore(library/init): mark a few combinators with [specialize]
2018-10-15 13:47:26 -07:00
Sebastian Ullrich
988d38b892
perf(library/init/control): inline monad_map instances even when partially applied
2018-10-04 14:23:03 -07:00
Sebastian Ullrich
0563c60b1a
feat(library/init/lean/elaborator): add coroutine, use it to implement section/namespace elaborators (they don't do anything yet except for checking the end name)
2018-10-02 14:55:28 -07:00
Sebastian Ullrich
918388ac26
refactor(library/init/control/except): reintroduce except_t.mk
2018-10-02 14:55:28 -07:00
Sebastian Ullrich
e261d8f222
perf(library/init): missing [inline] attributes
2018-10-01 11:53:38 -07:00
Leonardo de Moura
7f64033111
chore(library/init): remove all occurrences of parameter command
...
We will not support the `parameter` command in Lean 4.
It is seldom used and creates many complications.
2018-09-26 17:54:11 -07:00
Leonardo de Moura
938c8dae83
fix(library/init/control/combinators): [inline] ==> [macro_inline]
2018-09-26 09:08:06 -07:00
Sebastian Ullrich
1d01e81de8
refactor(library/init/lean/parser): do not construct final syntax tree independent from intermediate outputs
...
This makes sure we have a single consistent view of the file
2018-09-25 18:28:53 -07:00
Sebastian Ullrich
d8b49e1dee
feat(library/init/control/functor): add <&>, which the old elaborator likes better than <$>
2018-09-25 13:23:56 -07:00
Leonardo de Moura
a3a8165388
feat(library/init/control/monad): provide seq_right default implementation for monad
...
It was using the `seq_right` from `applicative` which is
```
(seq_right := λ α β a b, const α id <$> a <*> b)
```
and horrible code was being generated.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2018-09-20 08:39:25 -07:00
Leonardo de Moura
5ff9e24b17
feat(library/init/control): do not use unnecessary structures
...
It confuses the compiler.
2018-09-20 08:39:25 -07:00
Leonardo de Moura
11f98a409e
chore(library/init/control/except): missing @[inline] annotations
2018-09-19 09:13:49 -07:00
Leonardo de Moura
d3e225ec65
fix(library/init): missing @[inline]
2018-09-18 21:42:22 -07:00
Leonardo de Moura
b07c718425
refactor(library/init/core): change ite signature
2018-09-17 14:27:28 -07:00
Leonardo de Moura
78317c5062
chore(library/init/control/combinators): remove dead notation
2018-09-12 17:34:25 -07:00
Leonardo de Moura
afd54039ab
chore(library): remove >>, we should use *>
2018-09-12 17:31:21 -07:00
Leonardo de Moura
9e305a5f26
chore(library): remove return, we should use pure
2018-09-12 16:51:11 -07:00
Leonardo de Moura
da2de33245
fix(library/init/io): move coroutine_io implementation to io
2018-09-06 18:09:32 -07:00
Sebastian Ullrich
de9d894c14
feat(library/init/lean/parser/reader): use coroutine on the module level
2018-08-29 16:42:24 -07:00
Leonardo de Moura
7a47406c4c
chore(library/tactic): remove simp_lemmas
2018-08-23 14:10:36 -07:00
Leonardo de Moura
c7cf75508d
feat(init/control/coroutine): avoid mutual inductive
...
Reason: we want to delete the inductive compiler.
2018-08-23 10:49:40 -07:00
Sebastian Ullrich
3516c37ec9
feat(library/init/control/coroutine_io): coroutine_io
2018-08-21 08:43:10 -07:00
Sebastian Ullrich
6b55e24ab7
feat(library/init/{io,control/except}): use lift_t to automatically upcast io and other errors
2018-08-21 08:43:09 -07:00
Sebastian Ullrich
a260bf91d4
refactor(library/vm/vm_io,library/system/io): remove io classes, make errors explicit
2018-08-21 08:43:09 -07:00
Leonardo de Moura
8a96fde229
feat(library/init/control/coroutine): add coroutine
...
Remark: the termination proofs are commented because Lean 4 is
currently ignoring them and accepting non-terminating functions.
These files are based on an experiment implemented using Lean 3.
We can find it here:
https://gist.github.com/leodemoura/f5d82426c105b5fae0880e77024f6e9c
We will use coroutines to implement the interaction between reader,
elaborator and main driver.
2018-08-12 17:14:02 -07:00
Sebastian Ullrich
ea2bed7481
feat(library/init/control/combinators): make more universe polymorphic (for e.g. io)
2018-07-30 10:38:00 -07:00