{-# 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  = ""