Commit Graph

2407 Commits

Author SHA1 Message Date
Denis Buzdalov
c29dc73c62 [ base ] Add semigroup and monoid instances for Vect 2021-08-13 18:59:54 +01:00
G. Allais
c1ebc0535d
[ new ] semantic highlighting in REPL & holes (#1836) 2021-08-13 16:00:54 +01:00
André Videla
82796b3936 print full names in linear checking 2021-08-12 14:14:44 +01:00
Denis Buzdalov
23bb381f0f [ cleanup ] Small code cleanup, less mutual block and one \case use 2021-08-12 12:38:06 +01:00
Denis Buzdalov
940f588890 [ ttimp ] Add a utility function returning an FC by TTImp 2021-08-11 14:18:41 +01:00
Denis Buzdalov
c3398274d5 [ elab ] Add an ability to fail elab script with a custom FC 2021-08-11 14:18:41 +01:00
Denis Buzdalov
377b21e376 [ doc ] Remove trailing spaces from doc files 2021-08-11 12:50:02 +01:00
Denis Buzdalov
8fb18e24a1 [ fix ] Make standard monad transformer's Alternative be lazy on 2nd arg 2021-08-11 11:33:46 +01:00
Denis Buzdalov
99f1e11ddb [ cleanup ] Slightly improve readability 2021-08-11 11:33:46 +01:00
Denis Buzdalov
9357d777f6 [ base ] Relax requirement of Alternative implementation for ReaderT 2021-08-11 11:33:46 +01:00
G. Allais
21c6f4fb79
[ breaking ] remove parsing of dangling binders (#1711)
* [ breaking ] remove parsing of dangling binders

It used to be the case that

```
ID : Type -> Type
ID a = a

test : ID (a : Type) -> a -> a
test = \ a, x => x
```

and

```
head : List $ a -> Maybe a
head [] = Nothing
head (x :: _) = Just x
```

were accepted but these are now rejected because:

* `ID (a : Type) -> a -> a` is parsed as `(ID (a : Type)) -> a -> a`
* `List $ a -> Maybe a` is parsed as `List (a -> Maybe a)`

Similarly if you want to use a lambda / rewrite / let expression as
part of the last argument of an application, the use of `$` or parens
is now mandatory.

This should hopefully allow us to make progress on #1703
2021-08-10 19:24:32 +01:00
Niklas Larsson
c9f9e1e667
Merge pull request #1827 from buzden/fix-docs-linting
[ doc ] Hopefully fix the linting problem in the docs
2021-08-10 20:07:00 +02:00
Denis Buzdalov
150bffc307 [ doc ] Hopefully fix the linting problem in the docs 2021-08-10 15:11:32 +03:00
Mathew Polzin
590a9b15b3
Add a --list-packages command to the idris2 executable (#1824) 2021-08-10 09:44:53 +01:00
Tim Engler
be37e5b458 Added "lookupBetween" "leftMost" and "rightMost" to Data.SortedMap 2021-08-10 09:42:53 +01:00
Denis Buzdalov
15ccebbcf2 [ contrib ] Implementation of Zippable was added for Validated 2021-08-09 10:06:20 +01:00
Ellis Kesterton
0d6049cbcf
Fix error message for incorrect function patterns (#1816) 2021-08-09 10:00:34 +01:00
Edwin Brady
170af1e87a
Use Closures instead of NF in binders for normal forms (#1823)
* Skip forced arguments in conversion check

This isn't always safe - we have to have also checked the type of the
things we're converting - but in the place where it is safe it can be a
pretty significant saving.

* Use Closures, not NF, in Binders for normal forms

This means we don't need to reduce argument types during unification if
we don't need to. Also, we now try to avoid reducing closures during
unification if they are unified with a metavariable. Together, this
saves a huge amount of unnecessary evaluation in programs that do a lot
of compile time evaluation.

* Didn't mean to update idris2api.ipkg

* Fix dodgy merge
2021-08-08 17:05:29 +01:00
Edwin Brady
cd86340311 Skip forced arguments in conversion check
This isn't always safe - we have to have also checked the type of the
things we're converting - but in the place where it is safe it can be a
pretty significant saving.
2021-08-07 16:23:57 +01:00
Alex Humphreys
f3855d7100
Update contrib Text.Parser to match Library.Text.Parser (#1808)
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2021-08-06 10:03:13 +01:00
Las Safin
ca95781a74 flake.nix: Use Racket's Chez for non-x86_64-linux platforms
It supports many more platforms, excerpt from the README:
> Supported platforms:
>
>     Windows: x86, x86_64
>     Mac OS: x86, x86_64, AArch64, PowerPC32
>     Linux: x86, x86_64, ARMv6, AArch64, PowerPC32
>     FreeBSD: x86, x86_64, ARMv6, AArch64, PowerPC32
>     OpenBSD: x86, x86_64, ARMv6, AArch64, PowerPC32
>     NetBSD: x86, x86_64, ARMv6, AArch64, PowerPC32
>     Solaris: x86, x86_64
>     Android: ARMv7, AArch64
>     iOS: AArch64

Link to the fork: https://github.com/racket/ChezScheme
2021-08-06 08:54:14 +02:00
Edwin Brady
1b6cc3ba1b More Scheme readback machinery
We need these things in the next version so that the next-but-one
version can have a scheme evaluator!
2021-08-05 17:01:53 +01:00
Mathew Polzin
976586ff86
Merge pull request #1806 from mattpolzin/overridable-version-suffix 2021-08-03 08:20:47 -07:00
Zoe Stafford
1669fc351b
Refactor %builtin (#1803)
* Stub for future 'identity' optimisation
I plan to add this later, but I'm using for now for
NaturalToInteger and IntegerToNatural

* Refactor `%builtin`
fixes #1799

- automatically optimise all Natural shaped things
- NaturalToInteger and IntegerToNatural now use
  new `Identity` flag (internal use only for now)
  which signals the function is identity at runtime

* Use NaturalToInteger and IntegerToNatural for Nat and Fin
Also define show fin in terms of finToInteger, for speed

* Fix name handling for %builtin

* [ tests ] fixes + #1799

* remove %builtin from libs
Add back after next version

* Use resolved names where convenient
2021-08-03 14:19:17 +01:00
Mathew Polzin
ed0c8d60bc
Merge pull request #1807 from mattpolzin/correct-gmp-install-directions 2021-07-31 12:56:42 -07:00
Mathew Polzin
52cc1554e3 get a bit more specific about the GMP library requirement. 2021-07-30 23:10:59 -07:00
Mathew Polzin
fe306f8e4b support explicitly setting a version tag during build. 2021-07-30 21:51:59 -07:00
Guillaume ALLAIS
94811ba8e7 [ ci ] bring racket builds back
A new environment seems to have solved our issue.
Cf. actions/virtual-environments#3774
2021-07-30 16:18:58 +01:00
Zoe Stafford
8e1ca0eddf
Add break in each case alt in js backend (#1796)
* Add `break` in each case alt in js backend
Fixes #1795

* Remove some uneeded `break`s

* linter

* Follow @stefan-hoeck 's advice
This is neater
Note: I renamed breakAfterAssignment because it's too much work to type

* [ test ] Test for #1795

* cleanup: remove unneeded vcat
2021-07-30 07:16:23 +01:00
Sventimir
4920601fe9
Add tests for Nat ranges and fix bad range [1,2..1] behaviour. (#1794)
Co-authored-by: Marcin Pastudzki <marcin.pastudzki@gmail.com>
2021-07-28 06:52:59 +01:00
Guillaume ALLAIS
84b064330c [ ci ] add collie & frex
[ci: libs]
2021-07-27 13:58:41 +01:00
Guillaume ALLAIS
c48fe486fa [ cleanup ] on is meant to be used with 2 arguments
The previous definition means it won't reduce until it's applied to
4 arguments which may have detrimental effects: ``f `on` fst`` would
for instance stay blocked, with some implicit arguments of the form
`DPair a b`. This means that `b` appears in a negative position in
the expression which may lead to positivity checking rejecting a
datatype defined using `on`!

I have decided to leave `g` and `f` on the LHS because I expect `on`
to be used either:
  1. partially applied to two arguments
  2. in a section if only applied to 1 and sections get eta-expanded
     by the parser so that's fine.
2021-07-27 13:58:41 +01:00
Guillaume ALLAIS
31ffb4e5c7 [ cleanup ] various public export & cleanup
Turns out that `Smaller` and `LT` won't unify because
1. the instance Sized Nat is not publicly exported
2. Smaller, and LT are stuck until fully applied

The given changes make that go away.
2021-07-27 09:06:20 +01:00
Mathew Polzin
b03395debe
Merge pull request #1603 from ska80/remove-realpath-notes
Remove all mentions of `realpath` from docs
2021-07-26 12:38:39 -07:00
Kamiλ Shakirov
0d03064663
Include GMP in the requirement list 2021-07-27 00:25:57 +06:00
Guillaume ALLAIS
13ef8ba707 [ fix #1782 ] remove the case-specific code
I can't make sense of this code, it seems to try to convert the
case function corresponding to `let (a, b) = f n in ...` into a
different case function where `f n` and `(a, b)` have been unified.
But if `f n` is a bona fide stuck computation, there's no chance of
this happening.

Just turning this off solves the #1782 and only breaks one function
in the whole of the idris2 repo (I would have expected our current
termination oracle to be too weak to detect it as valid anyway!)
and one in frex (which, again, should not have been seen as terminating).

Also fixes #1460
2021-07-26 17:03:16 +01:00
Guillaume ALLAIS
207a60479c [ re #1782 ] A bit more debugging info
Also making sure that the case block has the same totality as its
parent function. That does not seem to fix the bug though.
2021-07-26 17:03:16 +01:00
André Videla
aa77b7f33e
Merge pull request #1769 from andrevidela/fix-fromString-interpolation
Remove `fromString` calls from interpolated strings
2021-07-25 17:18:20 +00:00
Edwin Brady
b76050d670 Remove __collect_safe
This is to make the bootstrap build with earlier versions of Chez - we
don't strictly need it because we don't use threads (yet) and some linux
distros only have Chez 9.5.
2021-07-25 15:03:25 +01:00
Edwin Brady
c28b257fb5 Add ability to manipulate scheme objects
This is step 0 in a plan to use the scheme evaluator to evaluate Idris
expressions at compile time. As a proof of concept, I've got this
working for a toy language here: https://github.com/edwinb/SchemeEval

We won't be able to do anything interesting with this in Idris itself
until the next release because it involves updating the bootstrap code
and adding the ability to pass 'Integer' to foreign calls, which really
should have been allowed anyway since it's for a backend to decide what
it can cope with, not Idris itself.
2021-07-25 14:55:40 +01:00
Zoe Stafford
328617d6fa
Merge pull request #1781 from stefan-hoeck/file_comp
[ fix ] bash TAB completion for files
2021-07-25 08:35:43 +01:00
stefan-hoeck
a693138cc5 [ fix ] bash TAB completion for files 2021-07-24 04:48:01 +00:00
Niklas Larsson
51f59b9530
Merge pull request #1779 from melted/doc_fix
Update windows docs with gotchas
2021-07-23 16:10:26 +02:00
Niklas Larsson
4b0edbaa4f Update windows docs with gotchas 2021-07-23 15:48:54 +02:00
Guillaume ALLAIS
d0c0698c45 [ re #1771 ] Check parameters for positive uses
It's fine to allow positive occurences in (strictly positive)
parameters but we do need to check that these occurences are
strictly positive!
2021-07-23 13:30:24 +01:00
Guillaume ALLAIS
b24a9a51df [ re #1771 ] Fix another Erased-related issue (in nameIn) 2021-07-23 13:30:24 +01:00
Guillaume ALLAIS
230f42b697 [ re #1771 ] Do not use Erased to go under binders
In the `MkFix : f (Fix f) -> Fix f` example, using `Erased` for `f`
makes the type reduce to `[__] (Fix [__]) -> Fix [__]` and because
`[__] e1 ... en` computes to `[__]`, we end up with `[__] -> Fix [__]`
which does not reference `Fix` anymore.
2021-07-23 13:30:24 +01:00
Guillaume ALLAIS
df43045054 [ debug ] add a lot of logging throughout positivity checking 2021-07-23 13:30:24 +01:00
Niklas Larsson
603c60efec Add some docs about building on Windows 2021-07-23 10:58:38 +01:00
Ellis Kesterton
e5879dc687 Document --init
Reference the --init option for creating package files in the tutorial documentation.
2021-07-22 19:15:33 +01:00