{-# 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