{-# OPTIONS --cubical --safe #-} module Data.String where open import Agda.Builtin.String using (String) public open import Agda.Builtin.String open import Agda.Builtin.String.Properties open import Agda.Builtin.Char using (Char) public open import Agda.Builtin.Char open import Agda.Builtin.Char.Properties open import Relation.Binary open import Relation.Binary.Construct.On import Data.Nat.Order as ℕ open import Function.Injective open import Function open import Path open import Data.List open import Data.List.Relation.Binary.Lexicographic unpack : String → List Char unpack = primStringToList pack : List Char → String pack = primStringFromList charOrd : TotalOrder Char _ _ charOrd = on-ord primCharToNat lemma ℕ.totalOrder where lemma : Injective primCharToNat lemma x y p = builtin-eq-to-path (primCharToNatInjective x y (path-to-builtin-eq p )) listCharOrd : TotalOrder (List Char) _ _ listCharOrd = listOrd charOrd stringOrd : TotalOrder String _ _ stringOrd = on-ord primStringToList lemma listCharOrd where lemma : Injective primStringToList lemma x y p = builtin-eq-to-path (primStringToListInjective x y (path-to-builtin-eq p))