Difference list #
This file provides a few results about DList
, which is defined in Std
.
A difference list is a function that, given a list, returns the original content of the
difference list prepended to the given list. It is useful to represent elements of a given type
as a₁ + ... + aₙ
where + : α → α → α
is any operation, without actually computing.
This structure supports O(1)
append
and push
operations on lists, making it
useful for append-heavy uses such as logging and pretty printing.
Concatenates a list of difference lists to form a single difference list. Similar to
List.join
.
Equations
- Std.DList.join [] = Std.DList.empty
- Std.DList.join (x_1 :: xs) = x_1 ++ Std.DList.join xs
Instances For
@[simp]
theorem
Std.DList_singleton
{α : Type u_1}
{a : α}
:
Std.DList.singleton a = Std.DList.lazy_ofList { fn := fun (x : Unit) => [a] }
@[simp]
theorem
Std.DList_lazy
{α : Type u_1}
{l : List α}
:
Std.DList.lazy_ofList { fn := fun (x : Unit) => l } = Std.DList.ofList l