{-# OPTIONS --cubical --safe #-}
module Container.List.Syntax where
open import Prelude
open import Container
open import Container.List
open import Data.Fin
record ListSyntax {a b} (A : Type a) (B : Type b) : Type (a ℓ⊔ b) where
field [_] : B → List A
open ListSyntax ⦃ ... ⦄ public
instance
cons : ⦃ _ : ListSyntax A B ⦄ → ListSyntax A (A × B)
[_] ⦃ cons ⦄ (x , xs) .fst = suc ([ xs ] .fst)
[_] ⦃ cons ⦄ (x , xs) .snd f0 = x
[_] ⦃ cons ⦄ (x , xs) .snd (fs n) = [ xs ] .snd n
instance
sing : ListSyntax A A
[_] ⦃ sing ⦄ x = 1 , const x