module Data.Set.Syntax where open import Data.Set.Definition -- open import Data.Nat open import Prelude -- Vec⁺ : Type a → ℕ → Type a -- Vec⁺ A zero = A -- Vec⁺ A (suc n) = A × Vec⁺ A n -- ⟅_⟆ : ∀ {n} → Vec⁺ A n → 𝒦 A -- ⟅_⟆ {n = zero} x = x ∷ ∅ -- ⟅_⟆ {n = suc n} (x , xs) = x ∷ ⟅ xs ⟆ infixr 4 _,_ data SetBuilder (A : Type a) : Type a where sing : A → SetBuilder A _,_ : A → SetBuilder A → SetBuilder A infixl 6 _⟆ _⟆ : A → SetBuilder A _⟆ = sing infixr 4 ⟅_ ⟅_ : SetBuilder A → 𝒦 A ⟅ (sing x) = x ∷ ∅ ⟅ x , xs = x ∷ (⟅ xs)