12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152-------------------------------------------------------------------------- The Agda standard library---- Monad syntax for the TC monad------------------------------------------------------------------------ {-# OPTIONS --cubical-compatible --safe #-} module Reflection.TCM.Syntax where open import Agda.Builtin.Reflectionopen import Level using (Level) private variable a b : Level A : Set a B : Set b -------------------------------------------------------------------------- Monad syntax infixl 3 _<|>__<|>_ : TC A → TC A → TC A_<|>_ = catchTC{-# INLINE _<|>_ #-} infixl 1 _>>=_ _>>_ _<&>__>>=_ : TC A → (A → TC B) → TC B_>>=_ = bindTC{-# INLINE _>>=_ #-} _>>_ : TC A → TC B → TC Bxs >> ys = bindTC xs (λ _ → ys){-# INLINE _>>_ #-} infixl 4 _<$>_ _<*>_ _<$__<*>_ : TC (A → B) → TC A → TC Bfs <*> xs = bindTC fs (λ f → bindTC xs (λ x → returnTC (f x))){-# INLINE _<*>_ #-} _<$>_ : (A → B) → TC A → TC Bf <$> xs = bindTC xs (λ x → returnTC (f x)){-# INLINE _<$>_ #-} _<$_ : A → TC B → TC Ax <$ xs = bindTC xs (λ _ → returnTC x){-# INLINE _<$_ #-} _<&>_ : TC A → (A → B) → TC Bxs <&> f = bindTC xs (λ x → returnTC (f x)){-# INLINE _<&>_ #-}