lean4-htt/library/init/data
Leonardo de Moura 26da50ab0e feat(library/vm/vm_string): efficient iterator.extract
@kha I've added

   iterator.extract : iterator -> iterator -> option string

It returns `none` if the iterators are "incompatible".
If this function is inconvenient to use, we can change it and return the
empty string in these cases.

Given iterators `it1` and `it2`, if they are sharing the same string
object in memory, then the cost is O(pos(it2) - pos(it1)).
If not, we have an extra O(N) step where we check whether the strings
being iterated by it1 and it2 are equal (`N` is the size of the strings).
In most applications, I believe the iterators will share the string
object.

I didn't test the code much. BTW, I found an unrelated bug at
vm_string.cpp. So, I'm not very confident this code is rock solid.
2018-01-10 13:27:28 -08:00
..
array feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
bool feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
char refactor(library/init/data/char, library/init/data/fin): has_lt, has_le for char and fin 2017-11-13 15:09:08 -08:00
fin chore(library/init/data/fin/ops): revert 107ad36259. 2017-12-12 10:53:12 -08:00
int feat(library/type_context): smart unfolding 2018-01-09 15:09:08 -08:00
list feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
nat feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
option chore(library): use new structure update notation in the core lib 2017-11-17 16:57:54 -08:00
ordering feat(library/init/meta/interactive): add goal tagging support for by_cases 2017-12-13 15:17:13 -08:00
rbmap chore(library/init/data/rbmap): add missing file 2017-11-19 19:49:36 -08:00
rbtree chore(library/init/data/rbtree/basic): remove unnecessary equation 2017-11-22 08:22:42 -08:00
sigma refactor(frontends/lean/tactic_notation): rename note/define tactics to have/let 2017-06-22 08:03:23 -07:00
string feat(library/vm/vm_string): efficient iterator.extract 2018-01-10 13:27:28 -08:00
subtype feat(init/data/subtype): add subtype.eta 2017-05-27 04:13:59 -04:00
sum feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -08:00
unsigned feat(library/init/data/fin): add div 2017-03-05 16:43:15 -08:00
basic.lean feat(library/init): add ordering unbundled type classes, add has_strict_weak_ordering for cmp 2017-11-10 16:45:54 -08:00
default.lean feat(library/init/data/rbmap): add rbmap module 2017-11-19 19:49:36 -08:00
option_t.lean feat(library/init): add funext tactic 2017-12-04 14:54:39 -08:00
prod.lean feat(library/init/data/prod): has_lt for prod 2017-11-13 15:51:14 -08:00
quot.lean feat(init/data/quot): show that quot is the quotient by the generated equivalence 2017-05-27 04:14:00 -04:00
repr.lean fix(library/string): unicode char literals 2017-10-27 09:48:09 -07:00
set.lean feat(library/init): add funext tactic 2017-12-04 14:54:39 -08:00
setoid.lean feat(library): add has_equiv type class 2017-12-03 15:03:58 -08:00
to_string.lean refactor(library): add has_to_string back (but it produces unquoted values) 2017-06-18 18:30:10 -07:00
unit.lean refactor(library/data): delete init/data/instances.lean 2016-12-02 16:41:16 -08:00