module Chapter4.Desc.Tagged where

open import Level

open import Data.Nat hiding (suc)
open import Data.Fin hiding (suc ; lift)
open import Data.Vec
open import Data.Product

open import Chapter4.Desc

tagDesc : ( : Level)  Set (suc )
tagDesc  = Σ[ n   ] Vec (Desc ) n

toDesc : ∀{}  tagDesc   Desc 
toDesc (n , ds) =  (Lift (Fin n))  { (lift k)  lookup k ds })

toTagged : ∀{}  Desc   tagDesc 
toTagged d = ( 1 , d  [])