Commit graph

116 commits

Author SHA1 Message Date
Leonardo de Moura
e53cb81255 test(tests/playground/parser): replace parser.lean with parser2.lean 2019-04-12 07:50:50 -07:00
Leonardo de Moura
87690217c6 test(tests/playground/parser/parser2): add missing definitions 2019-04-12 07:30:43 -07:00
Leonardo de Moura
376830bd0d chore(tests/playground/parser): missing files and small issues 2019-04-12 07:29:46 -07:00
Leonardo de Moura
be328bd8e9 test(tests/playground/parser/parser2): add symbol BasicParser 2019-04-10 08:58:41 -07:00
Leonardo de Moura
1c73a4d089 test(tests/playground/parser): add identFn 2019-04-09 09:16:12 -07:00
Leonardo de Moura
67ba4d25b1 test(tests/playground/parser/parser2): add number parser 2019-04-09 07:20:35 -07:00
Leonardo de Moura
ab5519c7fe test(tests/playground/parser/parser2): add recurse 2019-04-08 07:57:45 -07:00
Leonardo de Moura
b633b32f2c test(tests/playground/parser/parser2): add whitespace and strLit 2019-04-08 07:39:55 -07:00
Leonardo de Moura
363f4449e4 test(tests/playground/parser/parser2): add optional combinator 2019-04-08 06:37:41 -07:00
Leonardo de Moura
deba610203 test(tests/playground/parser/parser2): add many and many1 combinators 2019-04-07 13:41:22 -07:00
Leonardo de Moura
16f9d1a5b6 test(tests/playground/parser/parser2): add node combinator 2019-04-07 13:26:25 -07:00
Leonardo de Moura
d7035497f3 test(tests/playground/parser): continue experiment 2019-04-07 12:45:11 -07:00
Leonardo de Moura
97ebe4603b test(tests/playground/parser): add syntax.lean with flat nodes and arrays 2019-04-06 19:36:04 -07:00
Leonardo de Moura
0c9fe3c7d4 feat(library/compiler): add [inline2] attribute, and stage2 inlining
This feature is useful since it allows us to perform inlining
after lambda lifting has been performed.
2019-04-06 08:00:58 -07:00
Leonardo de Moura
23febc9977 test(tests/playground/parser/parser2): more experiments 2019-04-05 18:09:13 -07:00
Leonardo de Moura
69fb157ff7 chore(tests/playground/parser/parser2): update TODO list 2019-04-05 17:25:36 -07:00
Leonardo de Moura
c44f79f981 test(tests/playground/parser/parser2): yet another parsing combinators experiment 2019-04-05 08:18:28 -07:00
Leonardo de Moura
f25554baa7 test(tests/playground/parser): multiple targets 2019-04-04 10:50:34 -07:00
Leonardo de Moura
dd72df26bd test(tests/playground/parser): create directory and Makefile for experiment 2019-04-04 10:36:17 -07:00
Leonardo de Moura
a883042dc8 chore(library/init): fold functions argument order consistency 2019-04-03 07:42:14 -07:00
Leonardo de Moura
d6b7c9c1e2 test(tests/playground/map_perf): RBMap vs HashMap 2019-04-03 07:27:10 -07:00
Leonardo de Moura
fb3150e69d chore(tests/playground): fix test 2019-04-03 07:21:17 -07:00
Leonardo de Moura
c43374d296 refactor(library/init/data/hashmap): use AssocList and HasBeq 2019-04-03 05:55:08 -07:00
Leonardo de Moura
ee050431e0 feat(runtime): add primitive hash functions 2019-04-03 04:01:36 -07:00
Sebastian Ullrich
5f8b1328c3 test(tests/playground/expander): add Leo's direct transformation 2019-04-03 11:27:06 +02:00
Leonardo de Moura
3d43f8a441 test(tests/playground/lazylist): LazyList 2019-04-02 17:26:29 -07:00
Leonardo de Moura
54b21bb3cd test(tests/playground/filemap): FileMap 2019-04-02 17:23:13 -07:00
Leonardo de Moura
b083b6b655 test(tests/playground/lowtech_expander): remove dead code 2019-04-01 15:45:13 -07:00
Leonardo de Moura
d73d262aa1 test(tests/playground/lowtech_expander): letTransformer skeleton 2019-04-01 15:08:34 -07:00
Leonardo de Moura
b75706ffff test(tests/playground/lowtech_expander): add support for fixing SyntaxNodeKinds when reading Syntax objects from .olean 2019-04-01 12:35:28 -07:00
Leonardo de Moura
8004fcf2f1 test(tests/playground/lowtech_expander): use Nat to identify SyntaxNodeKinds 2019-04-01 12:17:06 -07:00
Leonardo de Moura
76b054bc1d test(tests/playground/lowtech_expander): expander experiment 2019-04-01 10:55:41 -07:00
Sebastian Ullrich
daf208326a test(tests/playground): expander performance tests 2019-04-01 17:23:14 +02:00
Leonardo de Moura
a6fb9268bc tests(tests/playground/parser): add tests 2019-03-31 10:42:56 -07:00
Leonardo de Moura
e8780c193d test(tests/playground/parser): remove eps field, and make sure bind "preserves tail recursion" 2019-03-30 20:57:24 -07:00
Leonardo de Moura
7e08130c8f test(tests/playground/parser): add leanWhitespace parser 2019-03-30 12:48:18 -07:00
Leonardo de Moura
c9bd22c265 test(tests/playground/parser): add strLit 2019-03-30 08:04:59 -07:00
Leonardo de Moura
146292d3d6 fix(tests/playground): parser experiments 2019-03-28 10:32:39 -07:00
Leonardo de Moura
2943fce8c8 chore(library/init/core): add strictAnd and strictOr 2019-03-28 09:42:12 -07:00
Leonardo de Moura
19f31d483a chore(tests/playground/rbmap.library.lean): camelCase 2019-03-28 08:23:38 -07:00
Leonardo de Moura
42fbe3c18c chore(library/init,runtime,library/compiler): add fix primitive back
The new `partial def`s allow us to define `fix` in Lean, but the Lean
implementation is not as efficient as the native one. The native one
in C++ use weak pointers to prevent a closure allocation at every
recursive invocation.

This commit also fixes the `fixCore` helper functions that were broken
after we switched to camelCase.

We have updated the test `fix1.lean` to demonstrate the native
implementation is faster. Here are the numbers on my desktop.

```
./run.sh fix1.lean 24
721420279
Time for 'native fix': 816ms
721420279
Time for 'fix in lean': 1.34s
```
2019-03-27 17:13:53 -07:00
Leonardo de Moura
3936b2ba79 chore(library/init/io): we don't need fix anymore
`partial def` are much more general
2019-03-27 12:59:43 -07:00
Leonardo de Moura
829a50ccf7 test(tests/playground/partial_eq_lemma): partial equation lemmas
@kha I added this example as a template for what the equation compiler
will have to do. The plan is:
- We can use `partial` to define any function if the result type is
inhabited.
- If the result type is of the form `Partial a`, the equation compiler
generates lemmas of the form:

```
theorem fooEq args : terminates (foo args) → foo args = lhs
```
The new test contains an example.
2019-03-26 18:06:04 -07:00
Leonardo de Moura
0ce97893de chore(tests/playground/parser): port test file to new String API 2019-03-26 16:00:03 -07:00
Sebastian Ullrich
762ccb0d1d feat(tests/playground/environment_extension): scoped extensions in Lean 2019-03-25 17:35:01 +01:00
Sebastian Ullrich
360a1476cc chore(tests/playground/environment_ext): use nicer full name like in C++ 2019-03-25 16:12:14 +01:00
Leonardo de Moura
df9ce10623 feat(library/compiler): special support for initialization functions of the form def initFn : IO Unit
We can now write
```
@[init] def initFn : IO Unit := ...
```
instead of
```
def initFn : IO Unit := ...
@[init initFn] constant execInitFn : Unit := ()
```
2019-03-23 08:46:38 -07:00
Leonardo de Moura
412d0ea578 feat(library/init/lean/options): add setOptionFromString
We can use this primitive to process command line arguments of the form
`-D <key> = <value>`

TODO: allow users to attach `[init]` to definitions of the form
```
@[init] def foo : IO Unit := ...
```
and avoid the awkward auxiliary constant.
2019-03-22 17:26:43 -07:00
Leonardo de Moura
4f80e30574 feat(library/init/data/string/basic): add String.split 2019-03-22 17:26:43 -07:00
Sebastian Ullrich
91b244f679 chore(tests/playground/environment_ext): style and minor changes 2019-03-22 22:51:21 +01:00