Commit Graph

1318 Commits

Author SHA1 Message Date
Edwin Brady
69cb7c6ac4 Relax linearities in prelude 2020-12-29 21:32:01 +00:00
Edwin Brady
b75dcd5c17 Some multiplicity fixes in the libraries 2020-12-29 21:25:00 +00:00
Edwin Brady
5b97cd4499 Fix annotaion in Stream 2020-12-27 20:13:21 +00:00
Edwin Brady
61ba5e086f Fix linearity annotation in take
Hopefully this fixes the bootstrap build
2020-12-27 20:11:06 +00:00
Edwin Brady
ad632d825d Remove linearity subtyping
It's disappointing to have to do this, but I think necessary because
various issue reports have shown it to be unsound (at least as far as
inference goes) and, at the very least, confusing. This patch brings us
back to the basic rules of QTT.

On the one hand, this makes the 1 multiplicity less useful, because it
means we can't flag arguments as being used exactly once which would be
useful for optimisation purposes as well as precision in the type. On
the other hand, it removes some complexity (and a hack) from
unification, and has the advantage of being correct! Also, I still
consider the 1 multiplicity an experiment.

We can still do interesting things like protocol state tracking, which
is my primary motivation at least.

Ideally, if the 1 multiplicity is going to be more generall useful,
we'll need some kind of way of doing multiplicity polymorphism in the
future. I don't think subtyping is the way (I've pretty much always come
to regret adding some form of subtyping).

Fixes #73 (and maybe some others).
2020-12-27 19:58:35 +00:00
Edwin Brady
7e8ef1f10e
Merge pull request #878 from edwinb/localhint
Treat local hints differently in auto search
2020-12-27 14:18:06 +00:00
Edwin Brady
69f3c23cbb Treat local hints differently in auto search
Local hints need to reduce (just like global hints do) so we expand
their definition to the lifted name before applying them.
We're identifying the global hints by knowing that the binder name is a
nested function name. This is a bit of hack, and it'd probably be better
to record that information in the binder instead, but that's a more
substantial change than I want to do right now.
2020-12-27 13:41:48 +00:00
alissa42
02e12a82cf Adding default implementation of Foldable.null 2020-12-24 08:49:32 +00:00
Michael Messer
7dc84696a3
If the width terminal is zero make it Unbounded (#870) 2020-12-23 16:55:36 +00:00
André Videla
9c400a185e Add Traversable to List1 2020-12-21 15:10:00 +00:00
Denis Buzdalov
60e9cf44b0 Add List, LazyList and Stream unfolds and some LazyList's functions 2020-12-18 22:54:03 +00:00
Lynn
681c1bf10f Install hint for Apple Silicon (closes #836) 2020-12-18 15:07:35 +00:00
Denis Buzdalov
bff74807fd
Some functions, mostly for lazy lists (#854)
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
2020-12-18 10:33:56 +00:00
tensorknower69
aa940c3d18 change runState's signature 2020-12-17 10:10:18 +00:00
tensorknower69
c48b1e090e add execStateT and evalStateT 2020-12-17 10:10:18 +00:00
raptazure
043faf8baf docs: fix grammar 2020-12-16 10:02:34 +00:00
Edwin Brady
771e4034fa
Merge pull request #846 from edwinb/interfaces
Local hints (basic version)
2020-12-14 14:46:18 +00:00
Edwin Brady
6c9ad81c12 Add missing test
:#	../../../src/Compiler/.ANF.idr.swp
2020-12-14 13:38:40 +00:00
Edwin Brady
c1f58d963f
Merge branch 'master' into interfaces 2020-12-14 13:34:31 +00:00
Edwin Brady
252292451f Add local hints (basic version)
This gives us the ability to define and use implementations locally, in
where clauses/local let bindings, as well as flag local definitions as
hints.
It's not yet quite equivalent to global hints, however, since it translated
the hint to a local let binding, which doesn't reduce, so if something
relies on the reduction behaviour of the hint, it won't work. This
refinement is coming later
2020-12-14 13:25:50 +00:00
Wen Kokke
daff1f2fb8
Added assert_linear. (#844)
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2020-12-13 16:06:18 +00:00
G. Allais
3f6b99e979
[ fix #657 ] RigCount for interface parameters (#808) 2020-12-11 11:58:26 +00:00
Dong Tsing-hsuen
88aa55e875
[ new ] null method in Foldable (#832)
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2020-12-10 18:04:23 +00:00
Guillaume ALLAIS
4356d377c5 [ refactor ] parser for lambda & lambdacase 2020-12-10 18:01:14 +00:00
Guillaume ALLAIS
4025896572 [ fix #833, #677 ] bound variables start with a lowercase letter 2020-12-10 18:01:14 +00:00
Guillaume ALLAIS
0a685f8d2c [ debug ] remove max from log
Users should be allowed to de-escalate the level of detail they're
getting.
2020-12-10 14:27:02 +00:00
Guillaume ALLAIS
5de647cc3f [ refactor ] use difference list for efficient append 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
0675e58cca [ error ] crash rather than generating garbage 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
89daa5c1f6 [ cleanup ] existing list function & needlessly effectfule ones 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
3c0ff432bd [ cleanup ] redundant parens, language keyword 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
243ed5df2c [ cleanup ] remove trailing "pure ()" 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
39f26e7ed6 [ minor ] avoid repetition 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
f8c248dc7a [ refactor ] introduce Core.update 2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
e5c6dfac5b [ refactor ] remove toString, natMinus
* toString is an inefficient fastPack
* natMinus is an inefficient minus (we have already checked isLTE)
2020-12-08 13:07:53 +00:00
Guillaume ALLAIS
98674fc40a [ cleanup ] use pattern-matching binds in monadic code 2020-12-08 13:07:53 +00:00
Denis Buzdalov
a1b624a3bc Tiny fix of the formatting in the recently added documentation. 2020-12-08 08:56:38 +00:00
Fabián Heredia Montiel
87358f19da Increase timings of concurrency tests due to flaky windows runs 2020-12-07 21:20:09 +00:00
Ruslan Feizerahmanov
1dba32a0c4
[ doc ] new application syntax (#820) 2020-12-07 18:59:49 +00:00
Jan de Muijnck-Hughes
3a6e779acf Extended Literate support to include LaTeX. 2020-12-07 14:54:35 +00:00
Jan de Muijnck-Hughes
9c5198cde3 Fixed docs and improved Literate mode.
+ Expanded the documentation on how to use literate modes.
+ Added invisible code blocks in Markdown using specially tagged comment blocks: `<!-- idris -->`.
+ Fixed OrgMode specificaton to recognise comment blocks properly.
2020-12-07 14:54:35 +00:00
Nicolas A. Schmidt
ef6cbcf658
Auto-implicit __con now added before implicits. (#659) 2020-12-07 11:41:47 +00:00
Denis Buzdalov
b3542d66fc
Have lambda-case available everywhere lambda is (#819) 2020-12-07 11:34:48 +00:00
Guillaume ALLAIS
d30e984137 [ debug ] Give the option to log off 2020-12-07 11:33:37 +00:00
David Smith
c6abab438c
export a function to parse ipkg files (#822) 2020-12-07 10:53:01 +00:00
Edwin Brady
63a46722ef Force/Delay need to be inlined in Builtins
Otherwise (especially in the case of delay) the argument might be
evaluated prematurely.
2020-12-06 20:00:48 +00:00
Andor Penzes
aeab632c7e [doc] JS FFI examples. 2020-12-06 19:07:34 +00:00
Andy Lok
9e22a6e07b
Add javascript FFI for fastUnpack (#816) 2020-12-06 09:54:58 +00:00
Edwin Brady
22a534f400 Elaborate implementations in the right environment
This involves a small extension to IPragma, because to properly
elaborate names in a local scope we need to know which names are defined
in that scope so that they get applied to the environment when needed.

This means we can now define implementations of interfaces locally (but
there's still some work to do, because we don't yet have a way of
applying locally defined hints in auto search. It's coming soon!)
2020-12-05 20:53:03 +00:00
Denis Buzdalov
13cc27da1f An alternative (Fin-based) indexing function was added for lists. 2020-12-04 19:09:05 +00:00
Denis Buzdalov
4364793484 Type definition from Decidable.Equality was moved to a separate module
This is done to make able for `Data.*` modules of datatypes declared in
prelude to import modules that have their own definitions of `DecEq`
inside them (i.e. modules of datatypes declared in the `base`).
2020-12-04 19:09:05 +00:00