{-# OPTIONS --cubical --safe #-}
module HITs.PropositionalTruncation.Sugar where
open import Cubical.HITs.PropositionalTruncation
open import Level
_=<<_ : ∀ {a} {A : Type a} {b} {B : ∥ A ∥ → Type b}
→ ((x : A) → ∥ B ∣ x ∣ ∥) → (xs : ∥ A ∥) → ∥ B xs ∥
_=<<_ = elimPropTrunc (λ _ → squash)
_>>=_ : ∀ {a} {A : Type a} {b} {B : Type b}
→ (xs : ∥ A ∥) → (A → ∥ B ∥) → ∥ B ∥
_>>=_ {a} {A} {b} {B} xs f = elimPropTrunc (λ _ → squash) f xs
_>>_ : ∥ A ∥ → ∥ B ∥ → ∥ B ∥
_ >> ys = ys
pure : A → ∥ A ∥
pure = ∣_∣
_<*>_ : ∥ (A → B) ∥ → ∥ A ∥ → ∥ B ∥
fs <*> xs = do
f ← fs
x ← xs
∣ f x ∣
infixr 1 _∥$∥_
_∥$∥_ : (A → B)→ ∥ A ∥ → ∥ B ∥
f ∥$∥ xs = recPropTrunc squash (λ x → ∣ f x ∣) xs