Equations
- lazy_list.singleton a = lazy_list.cons a (λ («_» : unit), lazy_list.nil)
Equations
- lazy_list.of_list (h :: t) = lazy_list.cons h (λ («_» : unit), lazy_list.of_list t)
- lazy_list.of_list list.nil = lazy_list.nil
Equations
- (lazy_list.cons h t).to_list = h :: (t ()).to_list
- lazy_list.nil.to_list = list.nil
Equations
- (lazy_list.cons h t).head = h
- lazy_list.nil.head = default α
Equations
- (lazy_list.cons h t).tail = t ()
- lazy_list.nil.tail = lazy_list.nil
Equations
- (lazy_list.cons h t).append l = lazy_list.cons h (λ («_» : unit), (t ()).append l)
- lazy_list.nil.append l = l ()
Equations
- lazy_list.map f (lazy_list.cons h t) = lazy_list.cons (f h) (λ («_» : unit), lazy_list.map f (t ()))
- lazy_list.map f lazy_list.nil = lazy_list.nil
def
lazy_list.map₂
{α : Type u}
{β : Type v}
{δ : Type w}
(f : α → β → δ)
(a : lazy_list α)
(a_1 : lazy_list β) :
Equations
- lazy_list.map₂ f (lazy_list.cons h₁ t₁) (lazy_list.cons h₂ t₂) = lazy_list.cons (f h₁ h₂) (λ («_» : unit), lazy_list.map₂ f (t₁ ()) (t₂ ()))
- lazy_list.map₂ f (lazy_list.cons hd tl) lazy_list.nil = lazy_list.nil
- lazy_list.map₂ f lazy_list.nil (lazy_list.cons hd tl) = lazy_list.nil
- lazy_list.map₂ f lazy_list.nil lazy_list.nil = lazy_list.nil
Equations
Equations
- (lazy_list.cons h t).join = h.append (λ («_» : unit), (t ()).join)
- lazy_list.nil.join = lazy_list.nil
Equations
- l.for f = lazy_list.map f l
Equations
- lazy_list.approx (a + 1) (lazy_list.cons h t) = h :: lazy_list.approx a (t ())
- lazy_list.approx n.succ lazy_list.nil = list.nil
- lazy_list.approx 0 (lazy_list.cons hd tl) = list.nil
- lazy_list.approx 0 lazy_list.nil = list.nil
Equations
- lazy_list.filter p (lazy_list.cons h t) = ite (p h) (lazy_list.cons h (λ («_» : unit), lazy_list.filter p (t ()))) (lazy_list.filter p (t ()))
- lazy_list.filter p lazy_list.nil = lazy_list.nil
Equations
- (lazy_list.cons a l).nth (n + 1) = (l ()).nth n
- (lazy_list.cons a l).nth 0 = some a
- lazy_list.nil.nth n = none