{-# OPTIONS --cubical --safe #-} module Data.Nat.Show where open import Prelude open import Data.Nat open import Data.Nat.DivMod open import Data.String open import Data.List showDig : ℕ → Char showDig 0 = '0' showDig 1 = '1' showDig 2 = '2' showDig 3 = '3' showDig 4 = '4' showDig 5 = '5' showDig 6 = '6' showDig 7 = '7' showDig 8 = '8' showDig 9 = '9' showDig _ = '!' showsℕ : ℕ → List Char → List Char showsℕ n xs = go xs n n where go : List Char → ℕ → ℕ → List Char go a zero _ = a go a n@(suc _) (suc t) = go (showDig (rem n 10) ∷ a) (n ÷ 10) t go a (suc _) zero = a showℕ : ℕ → String showℕ n = pack (showsℕ n [])