{-# OPTIONS --cubical --safe #-}
module Data.List.Indexing where
open import Data.List.Base
open import Data.Fin
open import Prelude
infixl 6 _!_
_!_ : (xs : List A) → Fin (length xs) → A
(x ∷ xs) ! f0 = x
(x ∷ xs) ! fs i = xs ! i
tabulate : ∀ n → (Fin n → A) → List A
tabulate zero f = []
tabulate (suc n) f = f f0 ∷ tabulate n (f ∘ fs)