{-# 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)