{-# LANGUAGE
RankNTypes,
ScopedTypeVariables,
TypeApplications,
TypeFamilies,
KindSignatures,
MultiParamTypeClasses,
FlexibleInstances,
NoMonomorphismRestriction,
ConstraintKinds,
DataKinds,
FlexibleContexts
#-}
module DDF.Meta.Diff (module DDF.Meta.Diff, module DDF.Meta.Interpreter, module DDF.Vector) where
import DDF.Vector
import DDF.Meta.Interpreter
type family DiffType (v :: *) (x :: *)
newtype GDiff r h x = GDiff {runGDiff :: forall v. Vector r v => Proxy v -> Diff r v h x}
newtype Diff r v h x = Diff {runDiff :: r (DiffType v h) (DiffType v x)}