Stefan Höck
57c589ca80
[ performance ] More stack safety in the Prelude ( #2704 )
2022-10-26 09:54:53 +01:00
Denis Buzdalov
d3fa76052b
[ new ] Introduce a Biinjective
interface
2022-05-20 11:50:46 +01:00
Denis Buzdalov
e8d3d788c1
[ base ] Add some more properties, functions and interface implementations ( #2361 )
2022-03-23 13:33:13 +00:00
Denis Buzdalov
fc38afc144
[ base ] Some properties of List
and SnocList
( #2359 )
2022-03-18 08:40:37 +00:00
Joel Berkeley
fc45f7d888
[ base ] add insertAt
for List
( #2336 )
2022-03-17 18:23:47 +00:00
G. Allais
fd02bf8b3e
[ fix #2303 ] remove quadratic unwords ( #2345 )
2022-03-07 18:34:06 +00:00
Joel Berkeley
0ab0ecb199
add replaceAt
for List
( #2335 )
2022-03-03 23:40:18 +00:00
Jan de Muijnck-Hughes
4ba3bb6670
[ fix ] Literate things ( #2312 )
...
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
2022-02-18 11:29:52 +00:00
Joel Berkeley
5abc01453d
add deleteAt for List ( #2317 )
2022-02-11 09:28:36 +00:00
Mathew Polzin
8208ed2590
[ new ] A couple of nearly trivial proofs about list length. ( #2311 )
2022-02-07 17:51:04 +00:00
Robert Wright
1776efa8a5
Allow Type-level String operations
2022-02-03 16:10:47 +00:00
madman-bob
0ee9632e45
[ refactor ] Abstract Prelude.elem to work with all Foldables ( #2294 )
2022-02-01 21:34:29 +00:00
James Cook
e82600c4d6
[ opt ] transform rule making List.length tail-recursive. ( #2100 )
2022-01-24 16:12:29 +00:00
Guillaume ALLAIS
a91fdae426
[ base ] generalise Data.List type signatures
2021-11-24 19:58:35 +00:00
Robert Wright
921bc24a2a
Add List singleton function
2021-11-05 16:08:54 +00:00
CodingCellist
20fe83de9a
[ doc ] Completely document the Data.List
module ( #2061 )
2021-10-26 17:16:06 +01:00
Denis Buzdalov
c340e0e713
[ cleanup ] Move left autos that are most likely to be passed explicitly
2021-10-25 13:17:03 +01:00
Guillaume ALLAIS
2ee06e9db0
[ fix #2034 ] Productive cantor for Colist1
2021-10-21 16:01:02 +01:00
James Cook
971afa9f5d
Add a transform rule making (++) for List tail-recursive. ( #1888 )
2021-09-16 15:35:29 +01:00
Mathew Polzin
ef91cc01c7
Add list difference to base Data.List module.
2021-08-31 13:21:43 +01:00
Alissa Tung
2865a70a6e
[ base ] add List functions ( #1550 )
...
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2021-07-01 08:00:12 +01:00
Edwin Brady
c1057a19af
Merge pull request #1489 from buzden/some-uninhabiteds
...
[ base ] Some lacking implementations for `Uninhabited`
2021-06-23 16:17:32 +01:00
CodingCellist
55f8bc3b90
Improve case-splitting formatting to not introduce new whitespace; add a bit of comments+docs. ( #1553 )
2021-06-17 16:48:59 +01:00
Denis Buzdalov
927c358bef
[ base ] Some lacking implementations for Uninhabited
were added
2021-06-15 15:07:54 +03:00
Stefan Höck
66f3787cb7
[ cleanup ] Annotate JS backend sources ( #1425 )
2021-05-18 12:37:51 +01:00
G. Allais
ab241213f3
[ breaking ] making toList part of Foldable ( #1395 )
2021-05-11 08:26:00 +01:00
Andy Lok
da92f9d676
Cleanup List1 ( #1091 )
2021-03-17 14:07:52 +00:00
Denis Buzdalov
7a8c12771b
[ base ] A property of interaction between zipWith
and index
( #1128 )
2021-03-01 08:29:17 +00:00
Kamiλ Shakirov
140879f7b9
[ new ] Zippable interface ( #990 )
2021-01-27 18:23:08 +00:00
Kamiλ Shakirov
3bbf52025a
Add zip*/unzip* for List1 ( #986 )
2021-01-26 10:39:16 +00:00
Kamiλ Shakirov
db30dd3f16
Port Data.List.unzip from Idris1 ( #972 )
2021-01-21 16:30:00 +00:00
Mathew Polzin
e9324fcd60
Rename to reverseInvolutive
2021-01-06 08:45:44 -08:00
Mathew Polzin
bc76809288
Add proof that list reverse is involutory.
2020-12-28 17:30:24 -08:00
Denis Buzdalov
60e9cf44b0
Add List, LazyList and Stream unfolds and some LazyList's functions
2020-12-18 22:54:03 +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
Denis Buzdalov
13cc27da1f
An alternative (Fin-based) indexing function was added for lists.
2020-12-04 19:09:05 +00:00
Denis Buzdalov
f2596318e5
Proof of list bounds was made to be not present at runtime when indexing
2020-12-04 11:26:11 +00:00
Mathew Polzin
6ca03acd71
Add replaceWhen
for lists. ( #755 )
2020-11-27 19:10:08 +00:00
G. Allais
4a61146ba0
[ fix #705 ] Normalise primitives in mkPat ( #718 )
...
[ log ] prettier log for pats & clauses
[ re #650 ] Even lazier
[ fix #705 ] normalise primitives in mkPat
[ refactor ] introduce getPrimitiveNames
2020-10-02 12:22:57 +01:00
G. Allais
3df1f9c476
[ fix #63 ] interleaving let binders and local declarations ( #691 )
2020-09-28 13:15:22 +01:00
G. Allais
d105dd11a7
[ breaking ] remove List1 related ambiguities ( #690 )
2020-09-22 15:07:40 +01:00
Guillaume ALLAIS
65e194e9bb
[ re #660 ] Positivity checking for empty types
2020-09-14 18:37:47 +01:00
Guillaume ALLAIS
1d4c84171d
[ refactor ] suggested during SPLV
...
Main change
===========
The main change is to the type of function dealing with an untouched
segment of the local scope. e.g.
```
weak : {outer, vars : _} -> (ns : List Name) ->
tm (outer ++ inner) -> tm (outer ++ ns ++ inner)
```
Instead we now write
```
weak : SizeOf ns -> tm (outer ++ inner) -> tm (outer ++ ns ++ inner)
```
meaning that we do not need the values of `outer`, `inner` and `ns`
at runtime. Instead we only demand a `SizeOf ns` which is a `Nat`
together with an (erased) proof that `ns` is of that length.
Other modifications
===================
Quadratic behaviour
-------------------
A side effect of this refactor is the removal of two sources of
quadratic behaviour. They typically arise in a situation where
work is done on a scope of the form
```
outer ++ done ++ ns ++ inner
```
When `ns` is non-empty, some work is performed and then the variable
is moved to the pile of things we are `done` with. This leads to
recursive calls of the form `f done` -> `f (done ++ [v])` leading
to a cost quadratic in the size of `ns`.
Now that we only care about `SizeOf done`, the recursive call is
(once all the runtime irrelevant content is erased) for the form
`f n` -> `f (S n)`!
More runtime irrelevance
------------------------
In some places we used to rely on a list of names `vars` being
available. However once we only care about the length of `vars`,
the fact it is not available is not a limitation.
For instance a `SizeOf vars` can be reconstructed from an environment
assigning values to `vars` even if `vars` is irrelevant. Indeed the
size of the environment is the same as that of `vars`.
2020-08-27 10:14:55 +01:00
G. Allais
0a7ea69df5
[ refactor ] introduce List1 to remove impossible case ( #520 )
2020-08-04 20:03:18 +01:00
Ohad Kammar
5cfbac4a51
Add irrelevance annotations to Data.List functions taking NonEmpty
2020-07-30 06:01:42 +01:00
Alex Gryzlov
69612bf6bf
Add list lemmas ( #491 )
2020-07-29 10:51:07 +01:00
G. Allais
0908e76515
[ fix #346 ] Pull List.length into prelude ( #450 )
2020-07-14 12:15:57 +01:00
Nick Drozd
6519b5608d
Further simplify List
2020-07-12 21:00:33 -05:00
Nick Drozd
7d1ee9dd08
Simplify Equality
2020-07-07 10:48:23 +01:00
Nick Drozd
48fe4382eb
Simplify List
2020-07-07 10:48:23 +01:00