{-# LANGUAGE OverloadedStrings #-} module StreamPatch.Example where import StreamPatch.Patch import StreamPatch.Seek import StreamPatch.Patch.Compare qualified as Compare import StreamPatch.Patch.Compare ( Via(..), EqualityCheck(..) ) import StreamPatch.HFunctorList import Data.Vinyl import Data.Text ( Text ) import Numeric.Natural ex :: Patch (SIx Natural) '[Compare.Meta ('ViaEq 'Exact)] Text ex :: Patch (SIx Natural) '[Meta ('ViaEq 'Exact)] Text ex = Text -> SIx Natural -> HFunctorList '[Meta ('ViaEq 'Exact)] Text -> Patch (SIx Natural) '[Meta ('ViaEq 'Exact)] Text forall s (fs :: [* -> *]) a. a -> s -> HFunctorList fs a -> Patch s fs a Patch Text "no way this works LMAO" (Natural -> SIx Natural forall a. a -> SIx a SIx Natural 0) (HFunctorList '[Meta ('ViaEq 'Exact)] Text -> Patch (SIx Natural) '[Meta ('ViaEq 'Exact)] Text) -> HFunctorList '[Meta ('ViaEq 'Exact)] Text -> Patch (SIx Natural) '[Meta ('ViaEq 'Exact)] Text forall a b. (a -> b) -> a -> b $ Rec (Flap Text) '[Meta ('ViaEq 'Exact)] -> HFunctorList '[Meta ('ViaEq 'Exact)] Text forall {k} (fs :: [k -> *]) (a :: k). Rec (Flap a) fs -> HFunctorList fs a HFunctorList (Rec (Flap Text) '[Meta ('ViaEq 'Exact)] -> HFunctorList '[Meta ('ViaEq 'Exact)] Text) -> Rec (Flap Text) '[Meta ('ViaEq 'Exact)] -> HFunctorList '[Meta ('ViaEq 'Exact)] Text forall a b. (a -> b) -> a -> b $ Meta ('ViaEq 'Exact) Text -> Flap Text (Meta ('ViaEq 'Exact)) forall {k} (a :: k) (f :: k -> *). f a -> Flap a f Flap (Maybe (CompareRep ('ViaEq 'Exact) Text) -> Meta ('ViaEq 'Exact) Text forall (v :: Via) a. Maybe (CompareRep v a) -> Meta v a Compare.Meta Maybe (CompareRep ('ViaEq 'Exact) Text) forall a. Maybe a Nothing) Flap Text (Meta ('ViaEq 'Exact)) -> Rec (Flap Text) '[] -> Rec (Flap Text) '[Meta ('ViaEq 'Exact)] forall {u} (a :: u -> *) (r :: u) (rs :: [u]). a r -> Rec a rs -> Rec a (r : rs) :& Rec (Flap Text) '[] forall {u} (a :: u -> *). Rec a '[] RNil ex2 :: Patch (SIx Natural) '[] Text ex2 :: Patch (SIx Natural) '[] Text ex2 = Text -> SIx Natural -> HFunctorList '[] Text -> Patch (SIx Natural) '[] Text forall s (fs :: [* -> *]) a. a -> s -> HFunctorList fs a -> Patch s fs a Patch Text "no way this works LMAO" (Natural -> SIx Natural forall a. a -> SIx a SIx Natural 0) (HFunctorList '[] Text -> Patch (SIx Natural) '[] Text) -> HFunctorList '[] Text -> Patch (SIx Natural) '[] Text forall a b. (a -> b) -> a -> b $ Rec (Flap Text) '[] -> HFunctorList '[] Text forall {k} (fs :: [k -> *]) (a :: k). Rec (Flap a) fs -> HFunctorList fs a HFunctorList Rec (Flap Text) '[] forall {u} (a :: u -> *). Rec a '[] RNil