{-# OPTIONS --without-K --safe #-} module Prelude.Monoid where open import Agda.Builtin.String record Semigroup {a} (A : Set a) : Set a where infixr 5 _<>_ field _<>_ : A → A → A open Semigroup ⦃...⦄ public record Monoid {a} (A : Set a) : Set a where field mempty : A overlap ⦃ super ⦄ : Semigroup A open Monoid ⦃...⦄ public instance SemigroupString : Semigroup String _<>_ ⦃ SemigroupString ⦄ = primStringAppend MonoidString : Monoid String mempty ⦃ MonoidString ⦄ = ""