{-# OPTIONS --cubical --safe #-} module Data.List.Syntax where open import Data.List open import Prelude 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) = x ∷ [ xs ] instance sing : ListSyntax A A [_] ⦃ sing ⦄ = _∷ []