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)