Source code on Github
{-# OPTIONS --cubical-compatible #-}
module Class.Coercions where

open import Class.Prelude

infix -1 _↝_
record _↝_ (A : Type ℓ) (B : Type ℓ′) : Typeω where
  field to : A → B
  syntax to {B = B} = to[ B ]
open _↝_ ⦃...⦄ public

tos : ⦃ A ↝ B ⦄ → List A ↝ List B
tos .to = map to

infix -1 _⁇_↝_
record _⁇_↝_ (A : Type ℓ) (P : Pred A ℓ′) (B : Type ℓ′) : Typeω where
  field toBecause : (x : A) .{_ : P x} → B
  syntax toBecause x {p} = ⌞ x ⊣ p ⌟
open _⁇_↝_ ⦃...⦄ public