{-# OPTIONS --cubical --safe #-} module Algebra.Construct.Sign where open import Prelude data Signed {a} (A : Type a) : Type a where ⁻_ : A → Signed A ±0 : Signed A ⁺_ : A → Signed A unsign : (A → B) → B → (A → B) → Signed A → B unsign f g h (⁻ x) = f x unsign f g h ±0 = g unsign f g h (⁺ x) = h x