Source code on Github
{-# OPTIONS --without-K #-}
module Class.Functor.Instances where

open import Class.Prelude
open import Class.Functor.Core

instance
  Functor-Maybe : Functor Maybe
  Functor-Maybe = record {M}
    where import Data.Maybe as M renaming (map to _<$>_)

  FunctorLaws-Maybe : FunctorLaws Maybe
  FunctorLaws-Maybe = λ where
    .fmap-id  λ where (just _)  refl; nothing  refl
    .fmap-∘   λ where (just _)  refl; nothing  refl

  Functor-List : Functor List
  Functor-List ._<$>_ = map

  FunctorLaws-List : FunctorLaws List
  FunctorLaws-List = record {fmap-id = p; fmap-∘ = q}
    where
      p :  {A : Type } (x : List A)  fmap id x  x
      p = λ where
        []  refl
        (x  xs)  cong (x ∷_) (p xs)

      q :  {A : Type } {B : Type ℓ′} {C : Type ℓ″} {f : B  C} {g : A  B} (x : List A) 
        fmap (f  g) x  (fmap f  fmap g) x
      q {f = f}{g} = λ where
        []  refl
        (x  xs)  cong (f (g x) ∷_) (q xs)

  Functor-List⁺ : Functor List⁺
  Functor-List⁺ = record {L}
    where import Data.List.NonEmpty as L renaming (map to _<$>_)

  Functor-Vec :  {n}  Functor (flip Vec n)
  Functor-Vec = record {V}
    where import Data.Vec as V renaming (map to _<$>_)

  Functor-TC : Functor TC
  Functor-TC = record {R}
    where import Reflection.TCM.Syntax as R

  Functor-Abs : Functor Abs
  Functor-Abs = record {R}
    where import Reflection.AST.Abstraction as R renaming (map to _<$>_)

  Functor-Arg : Functor Arg
  Functor-Arg = record {R}
    where import Reflection.AST.Argument as R renaming (map to _<$>_)

  Functor-∃Vec : Functor (  Vec)
  Functor-∃Vec ._<$>_ f (_ , xs) = -, (f <$> xs)