packages feed

hypertypes-0.2.2: src/Hyper/Combinator/Func.hs

module Hyper.Combinator.Func
    ( HFunc (..)
    , _HFunc
    ) where

import Control.Lens (Iso, iso)
import Hyper.Type (HyperType, type (#))

newtype HFunc (i :: HyperType) o h = HFunc (i h -> o h)

_HFunc ::
    Iso
        (HFunc i0 o0 # h0)
        (HFunc i1 o1 # h1)
        (i0 # h0 -> o0 # h0)
        (i1 # h1 -> o1 # h1)
_HFunc = iso (\(HFunc x) -> x) HFunc