hypertypes 0.1.0.1 → 0.1.0.2
raw patch · 13 files changed
+40/−30 lines, 13 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Hyper: (#*#) :: (HNodes h, HNodesConstraint h c) => Proxy c -> (HWitness h n -> c n => r) -> HWitness h n -> r
+ Hyper: (#*#) :: (HNodes h, HNodesConstraint h c) => Proxy c -> (c n => HWitness h n -> r) -> HWitness h n -> r
- Hyper: [W_ANode_c] :: W_ANode c_aKZJ c_aKZJ
+ Hyper: [W_ANode_c] :: W_ANode c_aKUg c_aKUg
- Hyper: data W_ANode (c_aKZJ :: HyperType) node
+ Hyper: data W_ANode (c_aKUg :: HyperType) node
- Hyper: hAnn :: forall a_aDSR h_aDSS. Lens' (Ann a_aDSR h_aDSS) (a_aDSR h_aDSS)
+ Hyper: hAnn :: forall a_aEes h_aEet. Lens' (Ann a_aEes h_aEet) (a_aEes h_aEet)
- Hyper: hVal :: forall a_aDSR h_aDSS. Lens' (Ann a_aDSR h_aDSS) ((:#) h_aDSS (Ann a_aDSR))
+ Hyper: hVal :: forall a_aEes h_aEet. Lens' (Ann a_aEes h_aEet) ((:#) h_aEet (Ann a_aEes))
- Hyper.Class.Functor: hiso :: HFunctor h => (forall n. HWitness h n -> Iso' (p # n) (q # n)) -> Iso' (h # p) (h # q)
+ Hyper.Class.Functor: hiso :: HFunctor h => (forall n. HWitness h n -> AnIso' (p # n) (q # n)) -> Iso' (h # p) (h # q)
- Hyper.Class.Infer: _InferChild :: forall m_a1w4m h_a1w4n t_a1w4o m_a1w2g h_a1w2h t_a1w2i. Iso (InferChild m_a1w4m h_a1w4n t_a1w4o) (InferChild m_a1w2g h_a1w2h t_a1w2i) (m_a1w4m (InferredChild (UVarOf m_a1w4m) h_a1w4n t_a1w4o)) (m_a1w2g (InferredChild (UVarOf m_a1w2g) h_a1w2h t_a1w2i))
+ Hyper.Class.Infer: _InferChild :: forall m_a1vPb h_a1vPc t_a1vPd m_a1vN5 h_a1vN6 t_a1vN7. Iso (InferChild m_a1vPb h_a1vPc t_a1vPd) (InferChild m_a1vN5 h_a1vN6 t_a1vN7) (m_a1vPb (InferredChild (UVarOf m_a1vPb) h_a1vPc t_a1vPd)) (m_a1vN5 (InferredChild (UVarOf m_a1vN5) h_a1vN6 t_a1vN7))
- Hyper.Class.Infer: inRep :: forall v_a1w12 h_a1w13 t_a1w14 h_a1w21. Lens (InferredChild v_a1w12 h_a1w13 t_a1w14) (InferredChild v_a1w12 h_a1w21 t_a1w14) (h_a1w13 t_a1w14) (h_a1w21 t_a1w14)
+ Hyper.Class.Infer: inRep :: forall v_a1vLR h_a1vLS t_a1vLT h_a1vMQ. Lens (InferredChild v_a1vLR h_a1vLS t_a1vLT) (InferredChild v_a1vLR h_a1vMQ t_a1vLT) (h_a1vLS t_a1vLT) (h_a1vMQ t_a1vLT)
- Hyper.Class.Infer: inType :: forall v_a1w12 h_a1w13 t_a1w14 v_a1w22. Lens (InferredChild v_a1w12 h_a1w13 t_a1w14) (InferredChild v_a1w22 h_a1w13 t_a1w14) ((#) (InferOf (GetHyperType t_a1w14)) v_a1w12) ((#) (InferOf (GetHyperType t_a1w14)) v_a1w22)
+ Hyper.Class.Infer: inType :: forall v_a1vLR h_a1vLS t_a1vLT v_a1vMR. Lens (InferredChild v_a1vLR h_a1vLS t_a1vLT) (InferredChild v_a1vMR h_a1vLS t_a1vLT) ((#) (InferOf (GetHyperType t_a1vLT)) v_a1vLR) ((#) (InferOf (GetHyperType t_a1vLT)) v_a1vMR)
- Hyper.Class.Nodes: (#*#) :: (HNodes h, HNodesConstraint h c) => Proxy c -> (HWitness h n -> c n => r) -> HWitness h n -> r
+ Hyper.Class.Nodes: (#*#) :: (HNodes h, HNodesConstraint h c) => Proxy c -> (c n => HWitness h n -> r) -> HWitness h n -> r
- Hyper.Combinator.ANode: [W_ANode_c] :: W_ANode c_aKZJ c_aKZJ
+ Hyper.Combinator.ANode: [W_ANode_c] :: W_ANode c_aKUg c_aKUg
- Hyper.Combinator.ANode: data W_ANode (c_aKZJ :: HyperType) node
+ Hyper.Combinator.ANode: data W_ANode (c_aKUg :: HyperType) node
- Hyper.Combinator.Ann: hAnn :: forall a_aDSR h_aDSS. Lens' (Ann a_aDSR h_aDSS) (a_aDSR h_aDSS)
+ Hyper.Combinator.Ann: hAnn :: forall a_aEes h_aEet. Lens' (Ann a_aEes h_aEet) (a_aEes h_aEet)
- Hyper.Combinator.Ann: hVal :: forall a_aDSR h_aDSS. Lens' (Ann a_aDSR h_aDSS) ((:#) h_aDSS (Ann a_aDSR))
+ Hyper.Combinator.Ann: hVal :: forall a_aEes h_aEet. Lens' (Ann a_aEes h_aEet) ((:#) h_aEet (Ann a_aEes))
- Hyper.Diff: _CommonBody :: forall a_aYQ4 b_aYQ5 e_aYQ6. Prism' (Diff a_aYQ4 b_aYQ5 e_aYQ6) (CommonBody a_aYQ4 b_aYQ5 e_aYQ6)
+ Hyper.Diff: _CommonBody :: forall a_aYIJ b_aYIK e_aYIL. Prism' (Diff a_aYIJ b_aYIK e_aYIL) (CommonBody a_aYIJ b_aYIK e_aYIL)
- Hyper.Diff: _CommonBodyP :: forall h_aZ0o. Prism' (DiffP h_aZ0o) ((:#) h_aZ0o DiffP)
+ Hyper.Diff: _CommonBodyP :: forall h_aYT3. Prism' (DiffP h_aYT3) ((:#) h_aYT3 DiffP)
- Hyper.Diff: _CommonSubTree :: forall a_aYQ4 b_aYQ5 e_aYQ6. Prism' (Diff a_aYQ4 b_aYQ5 e_aYQ6) (Ann ((:*:) a_aYQ4 b_aYQ5) e_aYQ6)
+ Hyper.Diff: _CommonSubTree :: forall a_aYIJ b_aYIK e_aYIL. Prism' (Diff a_aYIJ b_aYIK e_aYIL) (Ann ((:*:) a_aYIJ b_aYIK) e_aYIL)
- Hyper.Diff: _CommonSubTreeP :: forall h_aZ0o. Prism' (DiffP h_aZ0o) (HPlain (GetHyperType h_aZ0o))
+ Hyper.Diff: _CommonSubTreeP :: forall h_aYT3. Prism' (DiffP h_aYT3) (HPlain (GetHyperType h_aYT3))
- Hyper.Diff: _Different :: forall a_aYQ4 b_aYQ5 e_aYQ6. Prism' (Diff a_aYQ4 b_aYQ5 e_aYQ6) ((:*:) (Ann a_aYQ4) (Ann b_aYQ5) e_aYQ6)
+ Hyper.Diff: _Different :: forall a_aYIJ b_aYIK e_aYIL. Prism' (Diff a_aYIJ b_aYIK e_aYIL) ((:*:) (Ann a_aYIJ) (Ann b_aYIK) e_aYIL)
- Hyper.Diff: _DifferentP :: forall h_aZ0o. Prism' (DiffP h_aZ0o) (HPlain (GetHyperType h_aZ0o), HPlain (GetHyperType h_aZ0o))
+ Hyper.Diff: _DifferentP :: forall h_aYT3. Prism' (DiffP h_aYT3) (HPlain (GetHyperType h_aYT3), HPlain (GetHyperType h_aYT3))
- Hyper.Diff: anns :: forall a_aYQ1 b_aYQ2 e_aYQ3. Lens' (CommonBody a_aYQ1 b_aYQ2 e_aYQ3) ((:*:) a_aYQ1 b_aYQ2 e_aYQ3)
+ Hyper.Diff: anns :: forall a_aYIG b_aYIH e_aYII. Lens' (CommonBody a_aYIG b_aYIH e_aYII) ((:*:) a_aYIG b_aYIH e_aYII)
- Hyper.Diff: val :: forall a_aYQ1 b_aYQ2 e_aYQ3. Lens' (CommonBody a_aYQ1 b_aYQ2 e_aYQ3) ((:#) e_aYQ3 (Diff a_aYQ1 b_aYQ2))
+ Hyper.Diff: val :: forall a_aYIG b_aYIH e_aYII. Lens' (CommonBody a_aYIG b_aYIH e_aYII) ((:#) e_aYII (Diff a_aYIG b_aYIH))
- Hyper.Infer.Blame: _Good :: forall v_a1yeG e_a1yeH. Prism' (BlameResult v_a1yeG e_a1yeH) (InferOf' e_a1yeH v_a1yeG)
+ Hyper.Infer.Blame: _Good :: forall v_a1xZv e_a1xZw. Prism' (BlameResult v_a1xZv e_a1xZw) (InferOf' e_a1xZw v_a1xZv)
- Hyper.Infer.Blame: _Mismatch :: forall v_a1yeG e_a1yeH. Prism' (BlameResult v_a1yeG e_a1yeH) (InferOf' e_a1yeH v_a1yeG, InferOf' e_a1yeH v_a1yeG)
+ Hyper.Infer.Blame: _Mismatch :: forall v_a1xZv e_a1xZw. Prism' (BlameResult v_a1xZv e_a1xZw) (InferOf' e_a1xZw v_a1xZv, InferOf' e_a1xZw v_a1xZv)
- Hyper.Infer.Result: _InferResult :: forall v_a1xaF e_a1xaG v_a1x8L e_a1x8M. Iso (InferResult v_a1xaF e_a1xaG) (InferResult v_a1x8L e_a1x8M) ((#) (InferOf (GetHyperType e_a1xaG)) v_a1xaF) ((#) (InferOf (GetHyperType e_a1x8M)) v_a1x8L)
+ Hyper.Infer.Result: _InferResult :: forall v_a1wVu e_a1wVv v_a1wTA e_a1wTB. Iso (InferResult v_a1wVu e_a1wVv) (InferResult v_a1wTA e_a1wTB) ((#) (InferOf (GetHyperType e_a1wVv)) v_a1wVu) ((#) (InferOf (GetHyperType e_a1wTB)) v_a1wTA)
- Hyper.Recurse: (#**#) :: (Recursive c, c h, RNodes h) => Proxy c -> (HRecWitness h n -> c n => r) -> HRecWitness h n -> r
+ Hyper.Recurse: (#**#) :: (Recursive c, c h, RNodes h) => Proxy c -> (c n => HRecWitness h n -> r) -> HRecWitness h n -> r
- Hyper.Type.AST.App: [W_App_expr] :: W_App expr_a28Yj expr_a28Yj
+ Hyper.Type.AST.App: [W_App_expr] :: W_App expr_a28DH expr_a28DH
- Hyper.Type.AST.App: appArg :: forall expr_a28Yj h_a28Yk. Lens' (App expr_a28Yj h_a28Yk) ((:#) h_a28Yk expr_a28Yj)
+ Hyper.Type.AST.App: appArg :: forall expr_a28DH h_a28DI. Lens' (App expr_a28DH h_a28DI) ((:#) h_a28DI expr_a28DH)
- Hyper.Type.AST.App: appFunc :: forall expr_a28Yj h_a28Yk. Lens' (App expr_a28Yj h_a28Yk) ((:#) h_a28Yk expr_a28Yj)
+ Hyper.Type.AST.App: appFunc :: forall expr_a28DH h_a28DI. Lens' (App expr_a28DH h_a28DI) ((:#) h_a28DI expr_a28DH)
- Hyper.Type.AST.App: data W_App (expr_a28Yj :: HyperType) node
+ Hyper.Type.AST.App: data W_App (expr_a28DH :: HyperType) node
- Hyper.Type.AST.FuncType: [W_FuncType_typ] :: W_FuncType typ_aX7Q typ_aX7Q
+ Hyper.Type.AST.FuncType: [W_FuncType_typ] :: W_FuncType typ_aX0X typ_aX0X
- Hyper.Type.AST.FuncType: data W_FuncType (typ_aX7Q :: HyperType) node
+ Hyper.Type.AST.FuncType: data W_FuncType (typ_aX0X :: HyperType) node
- Hyper.Type.AST.FuncType: funcIn :: forall typ_aX7Q h_aX7R. Lens' (FuncType typ_aX7Q h_aX7R) ((:#) h_aX7R typ_aX7Q)
+ Hyper.Type.AST.FuncType: funcIn :: forall typ_aX0X h_aX0Y. Lens' (FuncType typ_aX0X h_aX0Y) ((:#) h_aX0Y typ_aX0X)
- Hyper.Type.AST.FuncType: funcOut :: forall typ_aX7Q h_aX7R. Lens' (FuncType typ_aX7Q h_aX7R) ((:#) h_aX7R typ_aX7Q)
+ Hyper.Type.AST.FuncType: funcOut :: forall typ_aX0X h_aX0Y. Lens' (FuncType typ_aX0X h_aX0Y) ((:#) h_aX0Y typ_aX0X)
- Hyper.Type.AST.Lam: [W_Lam_expr] :: W_Lam v_a26yw expr_a26yx expr_a26yx
+ Hyper.Type.AST.Lam: [W_Lam_expr] :: W_Lam v_a26em expr_a26en expr_a26en
- Hyper.Type.AST.Lam: data W_Lam (v_a26yw :: Type) (expr_a26yx :: HyperType) node
+ Hyper.Type.AST.Lam: data W_Lam (v_a26em :: Type) (expr_a26en :: HyperType) node
- Hyper.Type.AST.Lam: lamIn :: forall v_a26yw expr_a26yx h_a26yy v_a26Bc. Lens (Lam v_a26yw expr_a26yx h_a26yy) (Lam v_a26Bc expr_a26yx h_a26yy) v_a26yw v_a26Bc
+ Hyper.Type.AST.Lam: lamIn :: forall v_a26em expr_a26en h_a26eo v_a26h2. Lens (Lam v_a26em expr_a26en h_a26eo) (Lam v_a26h2 expr_a26en h_a26eo) v_a26em v_a26h2
- Hyper.Type.AST.Lam: lamOut :: forall v_a26yw expr_a26yx h_a26yy expr_a26Bd h_a26Be. Lens (Lam v_a26yw expr_a26yx h_a26yy) (Lam v_a26yw expr_a26Bd h_a26Be) ((:#) h_a26yy expr_a26yx) ((:#) h_a26Be expr_a26Bd)
+ Hyper.Type.AST.Lam: lamOut :: forall v_a26em expr_a26en h_a26eo expr_a26h3 h_a26h4. Lens (Lam v_a26em expr_a26en h_a26eo) (Lam v_a26em expr_a26h3 h_a26h4) ((:#) h_a26eo expr_a26en) ((:#) h_a26h4 expr_a26h3)
- Hyper.Type.AST.Let: [W_Let_expr] :: W_Let v_a23RH expr_a23RI expr_a23RI
+ Hyper.Type.AST.Let: [W_Let_expr] :: W_Let v_a23xZ expr_a23y0 expr_a23y0
- Hyper.Type.AST.Let: data W_Let (v_a23RH :: Type) (expr_a23RI :: HyperType) node
+ Hyper.Type.AST.Let: data W_Let (v_a23xZ :: Type) (expr_a23y0 :: HyperType) node
- Hyper.Type.AST.Let: letEquals :: forall v_a23RH expr_a23RI h_a23RJ. Lens' (Let v_a23RH expr_a23RI h_a23RJ) ((:#) h_a23RJ expr_a23RI)
+ Hyper.Type.AST.Let: letEquals :: forall v_a23xZ expr_a23y0 h_a23y1. Lens' (Let v_a23xZ expr_a23y0 h_a23y1) ((:#) h_a23y1 expr_a23y0)
- Hyper.Type.AST.Let: letIn :: forall v_a23RH expr_a23RI h_a23RJ. Lens' (Let v_a23RH expr_a23RI h_a23RJ) ((:#) h_a23RJ expr_a23RI)
+ Hyper.Type.AST.Let: letIn :: forall v_a23xZ expr_a23y0 h_a23y1. Lens' (Let v_a23xZ expr_a23y0 h_a23y1) ((:#) h_a23y1 expr_a23y0)
- Hyper.Type.AST.Let: letVar :: forall v_a23RH expr_a23RI h_a23RJ v_a23UY. Lens (Let v_a23RH expr_a23RI h_a23RJ) (Let v_a23UY expr_a23RI h_a23RJ) v_a23RH v_a23UY
+ Hyper.Type.AST.Let: letVar :: forall v_a23xZ expr_a23y0 h_a23y1 v_a23Bg. Lens (Let v_a23xZ expr_a23y0 h_a23y1) (Let v_a23Bg expr_a23y0 h_a23y1) v_a23xZ v_a23Bg
- Hyper.Type.AST.Map: [W_TermMap_expr] :: W_TermMap h_aVHl expr_aVHm expr_aVHm
+ Hyper.Type.AST.Map: [W_TermMap_expr] :: W_TermMap h_aVAU expr_aVAV expr_aVAV
- Hyper.Type.AST.Map: _TermMap :: forall h_aVJq expr_aVJr f_aVJs h_aVHl expr_aVHm f_aVHn. Iso (TermMap h_aVJq expr_aVJr f_aVJs) (TermMap h_aVHl expr_aVHm f_aVHn) (Map h_aVJq ((:#) f_aVJs expr_aVJr)) (Map h_aVHl ((:#) f_aVHn expr_aVHm))
+ Hyper.Type.AST.Map: _TermMap :: forall h_aVCZ expr_aVD0 f_aVD1 h_aVAU expr_aVAV f_aVAW. Iso (TermMap h_aVCZ expr_aVD0 f_aVD1) (TermMap h_aVAU expr_aVAV f_aVAW) (Map h_aVCZ ((:#) f_aVD1 expr_aVD0)) (Map h_aVAU ((:#) f_aVAW expr_aVAV))
- Hyper.Type.AST.Map: data W_TermMap (h_aVHl :: Type) (expr_aVHm :: HyperType) node
+ Hyper.Type.AST.Map: data W_TermMap (h_aVAU :: Type) (expr_aVAV :: HyperType) node
- Hyper.Type.AST.Nominal: [W_NominalDecl_typ] :: W_NominalDecl typ_a1SQu typ_a1SQu
+ Hyper.Type.AST.Nominal: [W_NominalDecl_typ] :: W_NominalDecl typ_a1Sxt typ_a1Sxt
- Hyper.Type.AST.Nominal: [W_ToNom_term] :: W_ToNom nomId_a1SQo term_a1SQp term_a1SQp
+ Hyper.Type.AST.Nominal: [W_ToNom_term] :: W_ToNom nomId_a1Sxn term_a1Sxo term_a1Sxo
- Hyper.Type.AST.Nominal: _FromNom :: forall nomId_a1Tjb term_a1Tjc h_a1Tjd nomId_a1SQl term_a1SQm h_a1SQn. Iso (FromNom nomId_a1Tjb term_a1Tjc h_a1Tjd) (FromNom nomId_a1SQl term_a1SQm h_a1SQn) nomId_a1Tjb nomId_a1SQl
+ Hyper.Type.AST.Nominal: _FromNom :: forall nomId_a1T0a term_a1T0b h_a1T0c nomId_a1Sxk term_a1Sxl h_a1Sxm. Iso (FromNom nomId_a1T0a term_a1T0b h_a1T0c) (FromNom nomId_a1Sxk term_a1Sxl h_a1Sxm) nomId_a1T0a nomId_a1Sxk
- Hyper.Type.AST.Nominal: data W_NominalDecl (typ_a1SQu :: HyperType) node
+ Hyper.Type.AST.Nominal: data W_NominalDecl (typ_a1Sxt :: HyperType) node
- Hyper.Type.AST.Nominal: data W_ToNom (nomId_a1SQo :: Type) (term_a1SQp :: HyperType) node
+ Hyper.Type.AST.Nominal: data W_ToNom (nomId_a1Sxn :: Type) (term_a1Sxo :: HyperType) node
- Hyper.Type.AST.Nominal: nArgs :: forall nomId_a1SQr varTypes_a1SQs h_a1SQt varTypes_a1Tfz h_a1TfA. Lens (NominalInst nomId_a1SQr varTypes_a1SQs h_a1SQt) (NominalInst nomId_a1SQr varTypes_a1Tfz h_a1TfA) ((#) varTypes_a1SQs (QVarInstances (GetHyperType h_a1SQt))) ((#) varTypes_a1Tfz (QVarInstances (GetHyperType h_a1TfA)))
+ Hyper.Type.AST.Nominal: nArgs :: forall nomId_a1Sxq varTypes_a1Sxr h_a1Sxs varTypes_a1SWy h_a1SWz. Lens (NominalInst nomId_a1Sxq varTypes_a1Sxr h_a1Sxs) (NominalInst nomId_a1Sxq varTypes_a1SWy h_a1SWz) ((#) varTypes_a1Sxr (QVarInstances (GetHyperType h_a1Sxs))) ((#) varTypes_a1SWy (QVarInstances (GetHyperType h_a1SWz)))
- Hyper.Type.AST.Nominal: nId :: forall nomId_a1SQr varTypes_a1SQs h_a1SQt nomId_a1TfB. Lens (NominalInst nomId_a1SQr varTypes_a1SQs h_a1SQt) (NominalInst nomId_a1TfB varTypes_a1SQs h_a1SQt) nomId_a1SQr nomId_a1TfB
+ Hyper.Type.AST.Nominal: nId :: forall nomId_a1Sxq varTypes_a1Sxr h_a1Sxs nomId_a1SWA. Lens (NominalInst nomId_a1Sxq varTypes_a1Sxr h_a1Sxs) (NominalInst nomId_a1SWA varTypes_a1Sxr h_a1Sxs) nomId_a1Sxq nomId_a1SWA
- Hyper.Type.AST.Nominal: nParams :: forall typ_a1SQu h_a1SQv. Lens' (NominalDecl typ_a1SQu h_a1SQv) ((#) (NomVarTypes typ_a1SQu) QVars)
+ Hyper.Type.AST.Nominal: nParams :: forall typ_a1Sxt h_a1Sxu. Lens' (NominalDecl typ_a1Sxt h_a1Sxu) ((#) (NomVarTypes typ_a1Sxt) QVars)
- Hyper.Type.AST.Nominal: nScheme :: forall typ_a1SQu h_a1SQv h_a1Te0. Lens (NominalDecl typ_a1SQu h_a1SQv) (NominalDecl typ_a1SQu h_a1Te0) (Scheme (NomVarTypes typ_a1SQu) typ_a1SQu h_a1SQv) (Scheme (NomVarTypes typ_a1SQu) typ_a1SQu h_a1Te0)
+ Hyper.Type.AST.Nominal: nScheme :: forall typ_a1Sxt h_a1Sxu h_a1SUZ. Lens (NominalDecl typ_a1Sxt h_a1Sxu) (NominalDecl typ_a1Sxt h_a1SUZ) (Scheme (NomVarTypes typ_a1Sxt) typ_a1Sxt h_a1Sxu) (Scheme (NomVarTypes typ_a1Sxt) typ_a1Sxt h_a1SUZ)
- Hyper.Type.AST.Nominal: tnId :: forall nomId_a1SQo term_a1SQp h_a1SQq nomId_a1Thn. Lens (ToNom nomId_a1SQo term_a1SQp h_a1SQq) (ToNom nomId_a1Thn term_a1SQp h_a1SQq) nomId_a1SQo nomId_a1Thn
+ Hyper.Type.AST.Nominal: tnId :: forall nomId_a1Sxn term_a1Sxo h_a1Sxp nomId_a1SYm. Lens (ToNom nomId_a1Sxn term_a1Sxo h_a1Sxp) (ToNom nomId_a1SYm term_a1Sxo h_a1Sxp) nomId_a1Sxn nomId_a1SYm
- Hyper.Type.AST.Nominal: tnVal :: forall nomId_a1SQo term_a1SQp h_a1SQq term_a1Tho h_a1Thp. Lens (ToNom nomId_a1SQo term_a1SQp h_a1SQq) (ToNom nomId_a1SQo term_a1Tho h_a1Thp) ((:#) h_a1SQq term_a1SQp) ((:#) h_a1Thp term_a1Tho)
+ Hyper.Type.AST.Nominal: tnVal :: forall nomId_a1Sxn term_a1Sxo h_a1Sxp term_a1SYn h_a1SYo. Lens (ToNom nomId_a1Sxn term_a1Sxo h_a1Sxp) (ToNom nomId_a1Sxn term_a1SYn h_a1SYo) ((:#) h_a1Sxp term_a1Sxo) ((:#) h_a1SYo term_a1SYn)
- Hyper.Type.AST.Row: [W_FlatRowExtends_rest] :: W_FlatRowExtends key_a1qsN val_a1qsO rest_a1qsP rest_a1qsP
+ Hyper.Type.AST.Row: [W_FlatRowExtends_rest] :: W_FlatRowExtends key_a1qgE val_a1qgF rest_a1qgG rest_a1qgG
- Hyper.Type.AST.Row: [W_FlatRowExtends_val] :: W_FlatRowExtends key_a1qsN val_a1qsO rest_a1qsP val_a1qsO
+ Hyper.Type.AST.Row: [W_FlatRowExtends_val] :: W_FlatRowExtends key_a1qgE val_a1qgF rest_a1qgG val_a1qgF
- Hyper.Type.AST.Row: [W_RowExtend_rest] :: W_RowExtend key_a1qsR val_a1qsS rest_a1qsT rest_a1qsT
+ Hyper.Type.AST.Row: [W_RowExtend_rest] :: W_RowExtend key_a1qgI val_a1qgJ rest_a1qgK rest_a1qgK
- Hyper.Type.AST.Row: [W_RowExtend_val] :: W_RowExtend key_a1qsR val_a1qsS rest_a1qsT val_a1qsS
+ Hyper.Type.AST.Row: [W_RowExtend_val] :: W_RowExtend key_a1qgI val_a1qgJ rest_a1qgK val_a1qgJ
- Hyper.Type.AST.Row: data W_FlatRowExtends (key_a1qsN :: Type) (val_a1qsO :: HyperType) (rest_a1qsP :: HyperType) node
+ Hyper.Type.AST.Row: data W_FlatRowExtends (key_a1qgE :: Type) (val_a1qgF :: HyperType) (rest_a1qgG :: HyperType) node
- Hyper.Type.AST.Row: data W_RowExtend (key_a1qsR :: Type) (val_a1qsS :: HyperType) (rest_a1qsT :: HyperType) node
+ Hyper.Type.AST.Row: data W_RowExtend (key_a1qgI :: Type) (val_a1qgJ :: HyperType) (rest_a1qgK :: HyperType) node
- Hyper.Type.AST.Row: eKey :: forall key_a1qsR val_a1qsS rest_a1qsT h_a1qsU key_a1qzN. Lens (RowExtend key_a1qsR val_a1qsS rest_a1qsT h_a1qsU) (RowExtend key_a1qzN val_a1qsS rest_a1qsT h_a1qsU) key_a1qsR key_a1qzN
+ Hyper.Type.AST.Row: eKey :: forall key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL key_a1qnE. Lens (RowExtend key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL) (RowExtend key_a1qnE val_a1qgJ rest_a1qgK h_a1qgL) key_a1qgI key_a1qnE
- Hyper.Type.AST.Row: eRest :: forall key_a1qsR val_a1qsS rest_a1qsT h_a1qsU rest_a1qzO. Lens (RowExtend key_a1qsR val_a1qsS rest_a1qsT h_a1qsU) (RowExtend key_a1qsR val_a1qsS rest_a1qzO h_a1qsU) ((:#) h_a1qsU rest_a1qsT) ((:#) h_a1qsU rest_a1qzO)
+ Hyper.Type.AST.Row: eRest :: forall key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL rest_a1qnF. Lens (RowExtend key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL) (RowExtend key_a1qgI val_a1qgJ rest_a1qnF h_a1qgL) ((:#) h_a1qgL rest_a1qgK) ((:#) h_a1qgL rest_a1qnF)
- Hyper.Type.AST.Row: eVal :: forall key_a1qsR val_a1qsS rest_a1qsT h_a1qsU val_a1qzP. Lens (RowExtend key_a1qsR val_a1qsS rest_a1qsT h_a1qsU) (RowExtend key_a1qsR val_a1qzP rest_a1qsT h_a1qsU) ((:#) h_a1qsU val_a1qsS) ((:#) h_a1qsU val_a1qzP)
+ Hyper.Type.AST.Row: eVal :: forall key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL val_a1qnG. Lens (RowExtend key_a1qgI val_a1qgJ rest_a1qgK h_a1qgL) (RowExtend key_a1qgI val_a1qnG rest_a1qgK h_a1qgL) ((:#) h_a1qgL val_a1qgJ) ((:#) h_a1qgL val_a1qnG)
- Hyper.Type.AST.Row: freExtends :: forall key_a1qsN val_a1qsO rest_a1qsP h_a1qsQ key_a1qCG val_a1qCH. Lens (FlatRowExtends key_a1qsN val_a1qsO rest_a1qsP h_a1qsQ) (FlatRowExtends key_a1qCG val_a1qCH rest_a1qsP h_a1qsQ) (Map key_a1qsN ((:#) h_a1qsQ val_a1qsO)) (Map key_a1qCG ((:#) h_a1qsQ val_a1qCH))
+ Hyper.Type.AST.Row: freExtends :: forall key_a1qgE val_a1qgF rest_a1qgG h_a1qgH key_a1qqx val_a1qqy. Lens (FlatRowExtends key_a1qgE val_a1qgF rest_a1qgG h_a1qgH) (FlatRowExtends key_a1qqx val_a1qqy rest_a1qgG h_a1qgH) (Map key_a1qgE ((:#) h_a1qgH val_a1qgF)) (Map key_a1qqx ((:#) h_a1qgH val_a1qqy))
- Hyper.Type.AST.Row: freRest :: forall key_a1qsN val_a1qsO rest_a1qsP h_a1qsQ rest_a1qCI. Lens (FlatRowExtends key_a1qsN val_a1qsO rest_a1qsP h_a1qsQ) (FlatRowExtends key_a1qsN val_a1qsO rest_a1qCI h_a1qsQ) ((:#) h_a1qsQ rest_a1qsP) ((:#) h_a1qsQ rest_a1qCI)
+ Hyper.Type.AST.Row: freRest :: forall key_a1qgE val_a1qgF rest_a1qgG h_a1qgH rest_a1qqz. Lens (FlatRowExtends key_a1qgE val_a1qgF rest_a1qgG h_a1qgH) (FlatRowExtends key_a1qgE val_a1qgF rest_a1qqz h_a1qgH) ((:#) h_a1qgH rest_a1qgG) ((:#) h_a1qgH rest_a1qqz)
- Hyper.Type.AST.Scheme: [W_Scheme_typ] :: W_Scheme varTypes_a1J6J typ_a1J6K typ_a1J6K
+ Hyper.Type.AST.Scheme: [W_Scheme_typ] :: W_Scheme varTypes_a1IP2 typ_a1IP3 typ_a1IP3
- Hyper.Type.AST.Scheme: _QVarInstances :: forall h_a1Jfx typ_a1Jfy h_a1J6G typ_a1J6H. Iso (QVarInstances h_a1Jfx typ_a1Jfy) (QVarInstances h_a1J6G typ_a1J6H) (Map (QVar (GetHyperType typ_a1Jfy)) (h_a1Jfx typ_a1Jfy)) (Map (QVar (GetHyperType typ_a1J6H)) (h_a1J6G typ_a1J6H))
+ Hyper.Type.AST.Scheme: _QVarInstances :: forall h_a1IXQ typ_a1IXR h_a1IOZ typ_a1IP0. Iso (QVarInstances h_a1IXQ typ_a1IXR) (QVarInstances h_a1IOZ typ_a1IP0) (Map (QVar (GetHyperType typ_a1IXR)) (h_a1IXQ typ_a1IXR)) (Map (QVar (GetHyperType typ_a1IP0)) (h_a1IOZ typ_a1IP0))
- Hyper.Type.AST.Scheme: _QVars :: forall typ_a1Jex typ_a1J6I. Iso (QVars typ_a1Jex) (QVars typ_a1J6I) (Map (QVar (GetHyperType typ_a1Jex)) (TypeConstraintsOf (GetHyperType typ_a1Jex))) (Map (QVar (GetHyperType typ_a1J6I)) (TypeConstraintsOf (GetHyperType typ_a1J6I)))
+ Hyper.Type.AST.Scheme: _QVars :: forall typ_a1IWQ typ_a1IP1. Iso (QVars typ_a1IWQ) (QVars typ_a1IP1) (Map (QVar (GetHyperType typ_a1IWQ)) (TypeConstraintsOf (GetHyperType typ_a1IWQ))) (Map (QVar (GetHyperType typ_a1IP1)) (TypeConstraintsOf (GetHyperType typ_a1IP1)))
- Hyper.Type.AST.Scheme: data W_Scheme (varTypes_a1J6J :: AHyperType -> Type) (typ_a1J6K :: HyperType) node
+ Hyper.Type.AST.Scheme: data W_Scheme (varTypes_a1IP2 :: AHyperType -> Type) (typ_a1IP3 :: HyperType) node
- Hyper.Type.AST.Scheme: sForAlls :: forall varTypes_a1J6J typ_a1J6K h_a1J6L varTypes_a1JcL. Lens (Scheme varTypes_a1J6J typ_a1J6K h_a1J6L) (Scheme varTypes_a1JcL typ_a1J6K h_a1J6L) ((#) varTypes_a1J6J QVars) ((#) varTypes_a1JcL QVars)
+ Hyper.Type.AST.Scheme: sForAlls :: forall varTypes_a1IP2 typ_a1IP3 h_a1IP4 varTypes_a1IV4. Lens (Scheme varTypes_a1IP2 typ_a1IP3 h_a1IP4) (Scheme varTypes_a1IV4 typ_a1IP3 h_a1IP4) ((#) varTypes_a1IP2 QVars) ((#) varTypes_a1IV4 QVars)
- Hyper.Type.AST.Scheme: sTyp :: forall varTypes_a1J6J typ_a1J6K h_a1J6L typ_a1JcM h_a1JcN. Lens (Scheme varTypes_a1J6J typ_a1J6K h_a1J6L) (Scheme varTypes_a1J6J typ_a1JcM h_a1JcN) ((:#) h_a1J6L typ_a1J6K) ((:#) h_a1JcN typ_a1JcM)
+ Hyper.Type.AST.Scheme: sTyp :: forall varTypes_a1IP2 typ_a1IP3 h_a1IP4 typ_a1IV5 h_a1IV6. Lens (Scheme varTypes_a1IP2 typ_a1IP3 h_a1IP4) (Scheme varTypes_a1IP2 typ_a1IV5 h_a1IV6) ((:#) h_a1IP4 typ_a1IP3) ((:#) h_a1IV6 typ_a1IV5)
- Hyper.Type.AST.TypeSig: [W_TypeSig_Scheme_vars_TypeOf_term] :: W_TypeSig vars_a1Qdi term_a1Qdj (Scheme vars_a1Qdi (TypeOf term_a1Qdj))
+ Hyper.Type.AST.TypeSig: [W_TypeSig_Scheme_vars_TypeOf_term] :: W_TypeSig vars_a1PVl term_a1PVm (Scheme vars_a1PVl (TypeOf term_a1PVm))
- Hyper.Type.AST.TypeSig: [W_TypeSig_term] :: W_TypeSig vars_a1Qdi term_a1Qdj term_a1Qdj
+ Hyper.Type.AST.TypeSig: [W_TypeSig_term] :: W_TypeSig vars_a1PVl term_a1PVm term_a1PVm
- Hyper.Type.AST.TypeSig: data W_TypeSig (vars_a1Qdi :: AHyperType -> Type) (term_a1Qdj :: HyperType) node
+ Hyper.Type.AST.TypeSig: data W_TypeSig (vars_a1PVl :: AHyperType -> Type) (term_a1PVm :: HyperType) node
- Hyper.Type.AST.TypeSig: tsTerm :: forall vars_a1Qdi term_a1Qdj h_a1Qdk. Lens' (TypeSig vars_a1Qdi term_a1Qdj h_a1Qdk) ((:#) h_a1Qdk term_a1Qdj)
+ Hyper.Type.AST.TypeSig: tsTerm :: forall vars_a1PVl term_a1PVm h_a1PVn. Lens' (TypeSig vars_a1PVl term_a1PVm h_a1PVn) ((:#) h_a1PVn term_a1PVm)
- Hyper.Type.AST.TypeSig: tsType :: forall vars_a1Qdi term_a1Qdj h_a1Qdk vars_a1Qg1. Lens (TypeSig vars_a1Qdi term_a1Qdj h_a1Qdk) (TypeSig vars_a1Qg1 term_a1Qdj h_a1Qdk) ((:#) h_a1Qdk (Scheme vars_a1Qdi (TypeOf term_a1Qdj))) ((:#) h_a1Qdk (Scheme vars_a1Qg1 (TypeOf term_a1Qdj)))
+ Hyper.Type.AST.TypeSig: tsType :: forall vars_a1PVl term_a1PVm h_a1PVn vars_a1PY4. Lens (TypeSig vars_a1PVl term_a1PVm h_a1PVn) (TypeSig vars_a1PY4 term_a1PVm h_a1PVn) ((:#) h_a1PVn (Scheme vars_a1PVl (TypeOf term_a1PVm))) ((:#) h_a1PVn (Scheme vars_a1PY4 (TypeOf term_a1PVm)))
- Hyper.Type.AST.TypedLam: [W_TypedLam_expr] :: W_TypedLam var_a1FSN typ_a1FSO expr_a1FSP expr_a1FSP
+ Hyper.Type.AST.TypedLam: [W_TypedLam_expr] :: W_TypedLam var_a1FD8 typ_a1FD9 expr_a1FDa expr_a1FDa
- Hyper.Type.AST.TypedLam: [W_TypedLam_typ] :: W_TypedLam var_a1FSN typ_a1FSO expr_a1FSP typ_a1FSO
+ Hyper.Type.AST.TypedLam: [W_TypedLam_typ] :: W_TypedLam var_a1FD8 typ_a1FD9 expr_a1FDa typ_a1FD9
- Hyper.Type.AST.TypedLam: data W_TypedLam (var_a1FSN :: Type) (typ_a1FSO :: HyperType) (expr_a1FSP :: HyperType) node
+ Hyper.Type.AST.TypedLam: data W_TypedLam (var_a1FD8 :: Type) (typ_a1FD9 :: HyperType) (expr_a1FDa :: HyperType) node
- Hyper.Type.AST.TypedLam: tlIn :: forall var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ var_a1FWi. Lens (TypedLam var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ) (TypedLam var_a1FWi typ_a1FSO expr_a1FSP h_a1FSQ) var_a1FSN var_a1FWi
+ Hyper.Type.AST.TypedLam: tlIn :: forall var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb var_a1FGD. Lens (TypedLam var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb) (TypedLam var_a1FGD typ_a1FD9 expr_a1FDa h_a1FDb) var_a1FD8 var_a1FGD
- Hyper.Type.AST.TypedLam: tlInType :: forall var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ typ_a1FWj. Lens (TypedLam var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ) (TypedLam var_a1FSN typ_a1FWj expr_a1FSP h_a1FSQ) ((:#) h_a1FSQ typ_a1FSO) ((:#) h_a1FSQ typ_a1FWj)
+ Hyper.Type.AST.TypedLam: tlInType :: forall var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb typ_a1FGE. Lens (TypedLam var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb) (TypedLam var_a1FD8 typ_a1FGE expr_a1FDa h_a1FDb) ((:#) h_a1FDb typ_a1FD9) ((:#) h_a1FDb typ_a1FGE)
- Hyper.Type.AST.TypedLam: tlOut :: forall var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ expr_a1FWk. Lens (TypedLam var_a1FSN typ_a1FSO expr_a1FSP h_a1FSQ) (TypedLam var_a1FSN typ_a1FSO expr_a1FWk h_a1FSQ) ((:#) h_a1FSQ expr_a1FSP) ((:#) h_a1FSQ expr_a1FWk)
+ Hyper.Type.AST.TypedLam: tlOut :: forall var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb expr_a1FGF. Lens (TypedLam var_a1FD8 typ_a1FD9 expr_a1FDa h_a1FDb) (TypedLam var_a1FD8 typ_a1FD9 expr_a1FGF h_a1FDb) ((:#) h_a1FDb expr_a1FDa) ((:#) h_a1FDb expr_a1FGF)
- Hyper.Type.AST.Var: _Var :: forall v_a1EVG expr_a1EVH h_a1EVI v_a1DY7 expr_a1DY8 h_a1DY9. Iso (Var v_a1EVG expr_a1EVH h_a1EVI) (Var v_a1DY7 expr_a1DY8 h_a1DY9) v_a1EVG v_a1DY7
+ Hyper.Type.AST.Var: _Var :: forall v_a1EG1 expr_a1EG2 h_a1EG3 v_a1DIs expr_a1DIt h_a1DIu. Iso (Var v_a1EG1 expr_a1EG2 h_a1EG3) (Var v_a1DIs expr_a1DIt h_a1DIu) v_a1EG1 v_a1DIs
- Hyper.Type.Functor: [W_F_F_f] :: W_F f_aUfq (F f_aUfq)
+ Hyper.Type.Functor: [W_F_F_f] :: W_F f_aU9f (F f_aU9f)
- Hyper.Type.Functor: data W_F (f_aUfq :: Type -> Type) node
+ Hyper.Type.Functor: data W_F (f_aU9f :: Type -> Type) node
- Hyper.Type.Prune: _Pruned :: forall h_a1BNc. Prism' (Prune h_a1BNc) ()
+ Hyper.Type.Prune: _Pruned :: forall h_a1BxX. Prism' (Prune h_a1BxX) ()
- Hyper.Type.Prune: _Unpruned :: forall h_a1BUc h_a1BNc. Prism (Prune h_a1BUc) (Prune h_a1BNc) ((:#) h_a1BUc Prune) ((:#) h_a1BNc Prune)
+ Hyper.Type.Prune: _Unpruned :: forall h_a1BEX h_a1BxX. Prism (Prune h_a1BEX) (Prune h_a1BxX) ((:#) h_a1BEX Prune) ((:#) h_a1BxX Prune)
- Hyper.Unify.Binding: _Binding :: forall t_a1m4Y t_a1m2E. Iso (Binding t_a1m4Y) (Binding t_a1m2E) (Seq (UTerm UVar t_a1m4Y)) (Seq (UTerm UVar t_a1m2E))
+ Hyper.Unify.Binding: _Binding :: forall t_a1lST t_a1lQz. Iso (Binding t_a1lST) (Binding t_a1lQz) (Seq (UTerm UVar t_a1lST)) (Seq (UTerm UVar t_a1lQz))
- Hyper.Unify.Binding: _UVar :: forall t_a1m2y t_a1lV8. Iso (UVar t_a1m2y) (UVar t_a1lV8) Int Int
+ Hyper.Unify.Binding: _UVar :: forall t_a1lQt t_a1lJ3. Iso (UVar t_a1lQt) (UVar t_a1lJ3) Int Int
- Hyper.Unify.Binding.ST: _STUVar :: forall s_a1lDk t_a1lDl s_a1lBV t_a1lBW. Iso (STUVar s_a1lDk t_a1lDl) (STUVar s_a1lBV t_a1lBW) (STRef s_a1lDk (UTerm (STUVar s_a1lDk) t_a1lDl)) (STRef s_a1lBV (UTerm (STUVar s_a1lBV) t_a1lBW))
+ Hyper.Unify.Binding.ST: _STUVar :: forall s_a1lrf t_a1lrg s_a1lpQ t_a1lpR. Iso (STUVar s_a1lrf t_a1lrg) (STUVar s_a1lpQ t_a1lpR) (STRef s_a1lrf (UTerm (STUVar s_a1lrf) t_a1lrg)) (STRef s_a1lpQ (UTerm (STUVar s_a1lpQ) t_a1lpR))
- Hyper.Unify.Constraints: wcBody :: forall h_a14t6 ast_a14t7 h_a14vv. Lens (WithConstraint h_a14t6 ast_a14t7) (WithConstraint h_a14vv ast_a14t7) (h_a14t6 ast_a14t7) (h_a14vv ast_a14t7)
+ Hyper.Unify.Constraints: wcBody :: forall h_a14lx ast_a14ly h_a14nW. Lens (WithConstraint h_a14lx ast_a14ly) (WithConstraint h_a14nW ast_a14ly) (h_a14lx ast_a14ly) (h_a14nW ast_a14ly)
- Hyper.Unify.Constraints: wcConstraint :: forall h_a14t6 ast_a14t7. Lens' (WithConstraint h_a14t6 ast_a14t7) (TypeConstraintsOf (GetHyperType ast_a14t7))
+ Hyper.Unify.Constraints: wcConstraint :: forall h_a14lx ast_a14ly. Lens' (WithConstraint h_a14lx ast_a14ly) (TypeConstraintsOf (GetHyperType ast_a14ly))
- Hyper.Unify.Error: _ConstraintsViolation :: forall t_a15qc h_a15qd. Prism' (UnifyError t_a15qc h_a15qd) (t_a15qc h_a15qd, TypeConstraintsOf t_a15qc)
+ Hyper.Unify.Error: _ConstraintsViolation :: forall t_a15iD h_a15iE. Prism' (UnifyError t_a15iD h_a15iE) (t_a15iD h_a15iE, TypeConstraintsOf t_a15iD)
- Hyper.Unify.Error: _Mismatch :: forall t_a15qc h_a15qd. Prism' (UnifyError t_a15qc h_a15qd) (t_a15qc h_a15qd, t_a15qc h_a15qd)
+ Hyper.Unify.Error: _Mismatch :: forall t_a15iD h_a15iE. Prism' (UnifyError t_a15iD h_a15iE) (t_a15iD h_a15iE, t_a15iD h_a15iE)
- Hyper.Unify.Error: _Occurs :: forall t_a15qc h_a15qd. Prism' (UnifyError t_a15qc h_a15qd) (t_a15qc h_a15qd, t_a15qc h_a15qd)
+ Hyper.Unify.Error: _Occurs :: forall t_a15iD h_a15iE. Prism' (UnifyError t_a15iD h_a15iE) (t_a15iD h_a15iE, t_a15iD h_a15iE)
- Hyper.Unify.Error: _SkolemEscape :: forall t_a15qc h_a15qd. Prism' (UnifyError t_a15qc h_a15qd) ((:#) h_a15qd t_a15qc)
+ Hyper.Unify.Error: _SkolemEscape :: forall t_a15iD h_a15iE. Prism' (UnifyError t_a15iD h_a15iE) ((:#) h_a15iE t_a15iD)
- Hyper.Unify.Error: _SkolemUnified :: forall t_a15qc h_a15qd. Prism' (UnifyError t_a15qc h_a15qd) ((:#) h_a15qd t_a15qc, (:#) h_a15qd t_a15qc)
+ Hyper.Unify.Error: _SkolemUnified :: forall t_a15iD h_a15iE. Prism' (UnifyError t_a15iD h_a15iE) ((:#) h_a15iE t_a15iD, (:#) h_a15iE t_a15iD)
- Hyper.Unify.Generalize: [E_GTerm_v] :: HWitness v_a1gRg node -> W_GTerm v_a1gRg node
+ Hyper.Unify.Generalize: [E_GTerm_v] :: HWitness v_a1gIe node -> W_GTerm v_a1gIe node
- Hyper.Unify.Generalize: [W_GTerm_GTerm_v] :: W_GTerm v_a1gRg (GTerm v_a1gRg)
+ Hyper.Unify.Generalize: [W_GTerm_GTerm_v] :: W_GTerm v_a1gIe (GTerm v_a1gIe)
- Hyper.Unify.Generalize: _GBody :: forall v_a1gRg ast_a1gRh. Prism' (GTerm v_a1gRg ast_a1gRh) ((:#) ast_a1gRh (GTerm v_a1gRg))
+ Hyper.Unify.Generalize: _GBody :: forall v_a1gIe ast_a1gIf. Prism' (GTerm v_a1gIe ast_a1gIf) ((:#) ast_a1gIf (GTerm v_a1gIe))
- Hyper.Unify.Generalize: _GMono :: forall v_a1gRg ast_a1gRh. Prism' (GTerm v_a1gRg ast_a1gRh) (v_a1gRg ast_a1gRh)
+ Hyper.Unify.Generalize: _GMono :: forall v_a1gIe ast_a1gIf. Prism' (GTerm v_a1gIe ast_a1gIf) (v_a1gIe ast_a1gIf)
- Hyper.Unify.Generalize: _GPoly :: forall v_a1gRg ast_a1gRh. Prism' (GTerm v_a1gRg ast_a1gRh) (v_a1gRg ast_a1gRh)
+ Hyper.Unify.Generalize: _GPoly :: forall v_a1gIe ast_a1gIf. Prism' (GTerm v_a1gIe ast_a1gIf) (v_a1gIe ast_a1gIf)
- Hyper.Unify.Generalize: data W_GTerm (v_a1gRg :: AHyperType -> Type) node
+ Hyper.Unify.Generalize: data W_GTerm (v_a1gIe :: AHyperType -> Type) node
- Hyper.Unify.Term: _UConverted :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) Int
+ Hyper.Unify.Term: _UConverted :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) Int
- Hyper.Unify.Term: _UInstantiated :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (v_a19Eq ast_a19Er)
+ Hyper.Unify.Term: _UInstantiated :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (v_a19vo ast_a19vp)
- Hyper.Unify.Term: _UResolved :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (Pure ast_a19Er)
+ Hyper.Unify.Term: _UResolved :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (Pure ast_a19vp)
- Hyper.Unify.Term: _UResolving :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (UTermBody v_a19Eq ast_a19Er)
+ Hyper.Unify.Term: _UResolving :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (UTermBody v_a19vo ast_a19vp)
- Hyper.Unify.Term: _USkolem :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (TypeConstraintsOf (GetHyperType ast_a19Er))
+ Hyper.Unify.Term: _USkolem :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (TypeConstraintsOf (GetHyperType ast_a19vp))
- Hyper.Unify.Term: _UTerm :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (UTermBody v_a19Eq ast_a19Er)
+ Hyper.Unify.Term: _UTerm :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (UTermBody v_a19vo ast_a19vp)
- Hyper.Unify.Term: _UToVar :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (v_a19Eq ast_a19Er)
+ Hyper.Unify.Term: _UToVar :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (v_a19vo ast_a19vp)
- Hyper.Unify.Term: _UUnbound :: forall v_a19Eq ast_a19Er. Prism' (UTerm v_a19Eq ast_a19Er) (TypeConstraintsOf (GetHyperType ast_a19Er))
+ Hyper.Unify.Term: _UUnbound :: forall v_a19vo ast_a19vp. Prism' (UTerm v_a19vo ast_a19vp) (TypeConstraintsOf (GetHyperType ast_a19vp))
- Hyper.Unify.Term: uBody :: forall v_a19Es ast_a19Et v_a19YC. Lens (UTermBody v_a19Es ast_a19Et) (UTermBody v_a19YC ast_a19Et) ((:#) ast_a19Et v_a19Es) ((:#) ast_a19Et v_a19YC)
+ Hyper.Unify.Term: uBody :: forall v_a19vq ast_a19vr v_a19PA. Lens (UTermBody v_a19vq ast_a19vr) (UTermBody v_a19PA ast_a19vr) ((:#) ast_a19vr v_a19vq) ((:#) ast_a19vr v_a19PA)
- Hyper.Unify.Term: uConstraints :: forall v_a19Es ast_a19Et. Lens' (UTermBody v_a19Es ast_a19Et) (TypeConstraintsOf (GetHyperType ast_a19Et))
+ Hyper.Unify.Term: uConstraints :: forall v_a19vq ast_a19vr. Lens' (UTermBody v_a19vq ast_a19vr) (TypeConstraintsOf (GetHyperType ast_a19vr))
Files
- README.md +1/−1
- hypertypes.cabal +2/−2
- src/Hyper/Class/Functor.hs +3/−3
- src/Hyper/Class/Nodes.hs +1/−1
- src/Hyper/Combinator/ANode.hs +1/−1
- src/Hyper/Combinator/Ann.hs +1/−1
- src/Hyper/Combinator/Compose.hs +1/−1
- src/Hyper/Recurse.hs +1/−1
- src/Hyper/TH/Internal/Utils.hs +16/−9
- src/Hyper/TH/Morph.hs +8/−5
- src/Hyper/TH/Nodes.hs +3/−3
- src/Hyper/Unify/Generalize.hs +1/−1
- test/LangD.hs +1/−1
README.md view
@@ -6,7 +6,7 @@ > The goal is to define a data type by cases, where one can add new cases to the data type and new functions over the data type, without recompiling existing code, and while retaining static type safety. -[*Data types a la carte*](http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf) (DTALC, Swierstra, 2008) offers a solution for the expression problem which is only applicable for recursive expressions, without support for mutually recursive types. In practice, programming language ASTs do tend to be mutually recursive. [`multirec`](http://hackage.haskell.org/package/multirec) (Rodriguez et al, 2009) uses GADTs to encode mutually recursive types but in comparison to DTALC it lacks in the ability to construct the types from re-usable components.+[*Data types a la carte*](http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf) (DTALC, Swierstra, 2008) offers a solution for the expression problem which is only applicable for simple recursive expressions, without support for mutually recursive types. In practice, programming language ASTs do tend to be mutually recursive. [`multirec`](http://hackage.haskell.org/package/multirec) (Rodriguez et al, 2009) uses GADTs to encode mutually recursive types but in comparison to DTALC it lacks in the ability to construct the types from re-usable components. Hypertypes allow constructing expressions from re-usable terms like DTALC, which can be rich mutually recursive types like in `multirec`.
hypertypes.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: d25a0b3f8c7b76db97429b9b8756f4f2966f3352a921733dd51db840869bb422+-- hash: 2cd28816c22eeee72d7eaf5cbf22e66156807737fd967437f6ccdd5108df3649 name: hypertypes-version: 0.1.0.1+version: 0.1.0.2 synopsis: Typed ASTs description: Please see the README on GitHub at <https://github.com/lamdu/hypertypes#readme> category: Algorithms, Compilers/Interpreters, Language, Logic, Unification
src/Hyper/Class/Functor.hs view
@@ -8,7 +8,7 @@ , hiso ) where -import Control.Lens (Setter, Iso', sets, iso)+import Control.Lens (Setter, Iso', AnIso', sets, iso, cloneIso) import GHC.Generics import Hyper.Class.Nodes (HNodes(..), HWitness(..), _HWitness, (#>)) import Hyper.Type (type (#))@@ -66,6 +66,6 @@ -- TODO: Is there an equivalent for this in lens that we can name this after? hiso :: HFunctor h =>- (forall n. HWitness h n -> Iso' (p # n) (q # n)) ->+ (forall n. HWitness h n -> AnIso' (p # n) (q # n)) -> Iso' (h # p) (h # q)-hiso f = iso (hmap (\w -> (^. f w))) (hmap (\w -> (f w #)))+hiso f = iso (hmap (\w -> (^. cloneIso (f w)))) (hmap (\w -> (cloneIso (f w) #)))
src/Hyper/Class/Nodes.hs view
@@ -96,7 +96,7 @@ {-# INLINE (#*#) #-} (#*#) :: (HNodes h, HNodesConstraint h c) =>- Proxy c -> (HWitness h n -> (c n => r)) -> HWitness h n -> r+ Proxy c -> (c n => HWitness h n -> r) -> HWitness h n -> r (#*#) p r w = (p #> r) w w -- | Defunctionalized HNodesConstraint which can be curried
src/Hyper/Combinator/ANode.hs view
@@ -41,4 +41,4 @@ data instance MorphWitness (ANode a) (ANode b) _ _ where M_ANode :: MorphWitness (ANode a) (ANode b) a b morphMap f = _ANode %~ f M_ANode- morphLiftConstraint M_ANode _ = id+ morphLiftConstraint M_ANode _ x = x
src/Hyper/Combinator/Ann.hs view
@@ -29,7 +29,7 @@ instance RNodes h => HNodes (HFlip Ann h) where type HNodesConstraint (HFlip Ann h) c = (Recursive c, c h) type HWitnessType (HFlip Ann h) = HRecWitness h- hLiftConstraint (HWitness HRecSelf) = const id+ hLiftConstraint (HWitness HRecSelf) = \_ x -> x hLiftConstraint (HWitness (HRecSub w0 w1)) = hLiftConstraintH w0 w1 -- TODO: Dedup this and similar code in Hyper.Unify.Generalize
src/Hyper/Combinator/Compose.hs view
@@ -193,5 +193,5 @@ _Pure . _HCompose . hiso ( Proxy @(Recursively HFunctor) #>- _HCompose . hiso ( Proxy @(Recursively HFunctor) #> _HCompose . decompose')+ _HCompose . hiso (Proxy @(Recursively HFunctor) #> _HCompose . decompose') )
src/Hyper/Recurse.hs view
@@ -151,5 +151,5 @@ {-# INLINE (#**#) #-} (#**#) :: (Recursive c, c h, RNodes h) =>- Proxy c -> (HRecWitness h n -> (c n => r)) -> HRecWitness h n -> r+ Proxy c -> (c n => HRecWitness h n -> r) -> HRecWitness h n -> r (#**#) p r w = (p #>> r) w w
src/Hyper/TH/Internal/Utils.hs view
@@ -22,13 +22,14 @@ import Hyper.Type (AHyperType(..), GetHyperType, type (:#)) import Language.Haskell.TH import qualified Language.Haskell.TH.Datatype as D+import Language.Haskell.TH.Datatype.TyVarBndr import Hyper.Internal.Prelude data TypeInfo = TypeInfo { tiName :: Name , tiInstance :: Type- , tiParams :: [TyVarBndr]+ , tiParams :: [TyVarBndrUnit] , tiHyperParam :: Name , tiConstructors :: [(Name, D.ConstructorVariant, [Either Type CtrTypePattern])] } deriving Show@@ -69,10 +70,13 @@ case D.datatypeVars info of [] -> fail "expected type constructor which requires arguments" xs ->- case last xs of- KindedTV var (ConT aHyper) | aHyper == ''AHyperType -> pure (res, var)- PlainTV var -> pure (res, var)- _ -> fail "expected last argument to be a AHyperType variable"+ elimTV+ (pure . (,) res)+ ( \var c ->+ case c of+ ConT aHyper | aHyper == ''AHyperType -> pure (res, var)+ _ -> fail "expected last argument to be a AHyperType variable"+ ) (last xs) where res = foldl AppT (ConT (D.datatypeName info)) (init xs <&> VarT . D.tvName)@@ -219,8 +223,7 @@ makeNodeOf :: TypeInfo -> ([Type -> Q Con], NodeWitnesses) makeNodeOf info =- ( (nodes <&> Lens._1 %~ nodeGadtType) <> (embeds <&> Lens._1 %~ embedGadtType)- <&> \(t, n) c -> t c <&> GadtC [n] []+ ( (nodes <&> nodeGadtType) <> (embeds <&> embedGadtType) , NodeWitnesses { nodeWit = nodes & Map.fromList & getWit <&> \x -> [|HWitness $(conE x)|] , embedWit = embeds & Map.fromList & getWit <&> \x -> [|HWitness . $(conE x)|]@@ -240,7 +243,7 @@ nodesForPat (InContainer _ pat) = nodesForPat pat nodesForPat (FlatEmbed x) = tiConstructors x ^.. traverse . Lens._3 . traverse . Lens._Right >>= nodesForPat nodesForPat _ = []- nodeGadtType t n = n `AppT` t & pure+ nodeGadtType (t, n) c = gadtC [n] [] (pure (c `AppT` t)) embeds = pats ^.. traverse . Lens._Right >>= embedsForPat & nub <&> \t -> (t, mkName (embedBase <> mkNiceTypeName t))@@ -248,7 +251,11 @@ embedsForPat (InContainer _ pat) = embedsForPat pat embedsForPat (FlatEmbed x) = tiConstructors x ^.. traverse . Lens._3 . traverse . Lens._Right >>= embedsForPat embedsForPat _ = []- embedGadtType t n = [t|HWitness $(pure t) $nodeVar -> $(pure n) $nodeVar|]+ embedGadtType (t, n) c =+ gadtC [n]+ [ bangType (bang noSourceUnpackedness noSourceStrictness)+ [t|HWitness $(pure t) $nodeVar|]+ ] [t|$(pure c) $nodeVar|] nodeVar = mkName "node" & varT getWit :: Map Type Name -> Type -> Name getWit m h =
src/Hyper/TH/Morph.hs view
@@ -16,13 +16,14 @@ makeHMorph :: Name -> DecsQ makeHMorph typeName = makeTypeInfo typeName >>= makeHMorphForType +{-# ANN module "HLint: ignore Use id" #-} makeHMorphForType :: TypeInfo -> DecsQ makeHMorphForType info = -- TODO: Contexts instanceD (pure []) [t|HMorph $(pure src) $(pure dst)|] [ D.tySynInstDCompat ''MorphConstraint- (Just [pure (PlainTV constraintVar)])+ (Just [pure (plainTV constraintVar)]) ([src, dst, VarT constraintVar] <&> pure) (simplifyContext morphConstraint <&> toTuple) , dataInstD@@ -56,9 +57,11 @@ let n = witPrefix <> mkNiceTypeName x & mkName in ( x , ( n- , gadtC [n] []- [t|$(pure (ConT ''MorphWitness `appSubsts` x `AppT` varA `AppT` varB)) ->- $(pure morphWithNessOf) $(pure varA) $(pure varB)|])+ , gadtC [n]+ [ bangType (bang noSourceUnpackedness noSourceStrictness)+ (pure (ConT ''MorphWitness `appSubsts` x `AppT` varA `AppT` varB))+ ] (pure (morphWithNessOf `AppT` varA `AppT` varB))+ ) ) witnesses = nodeWits <> embedWits & Map.fromList varA = VarT (mkName "a")@@ -70,7 +73,7 @@ | otherwise = (nodeWits ^.. traverse . Lens._2 . Lens._1 <&> liftNodeConstraint) <> (embedWits ^.. traverse . Lens._2 . Lens._1 <&> liftEmbedConstraint)- liftNodeConstraint n = clause [conP n [], wildP] (normalB [|id|]) []+ liftNodeConstraint n = clause [conP n [], wildP] (normalB [|\x -> x|]) [] liftEmbedConstraint n = clause [conP n [varP varW], varP varProxy] (normalB [|morphLiftConstraint $(varE varW) $(varE varProxy)|]) []
src/Hyper/TH/Nodes.hs view
@@ -24,7 +24,7 @@ [ instanceD (simplifyContext (makeContext info)) [t|HNodes $(pure (tiInstance info))|] [ D.tySynInstDCompat ''HNodesConstraint- (Just [pure (PlainTV constraintVar)])+ (Just [pure (plainTV constraintVar)]) [pure (tiInstance info), c] (nodesConstraint >>= simplifyContext <&> toTuple) , D.tySynInstDCompat ''HWitnessType Nothing [pure (tiInstance info)] witType@@ -39,7 +39,7 @@ | otherwise = ( tiParams info <&> varT . D.tvName & foldl appT (conT witTypeName) , [dataD (pure []) witTypeName- (tiParams info <> [PlainTV (mkName "node")])+ (tiParams info <> [plainTV (mkName "node")]) Nothing (nodeOfCons <&> (witType >>=)) [] ] )@@ -69,7 +69,7 @@ | otherwise = clauses where clauses = (nodeWitCtrs wit <&> liftNode) <> (embedWitCtrs wit <&> liftEmbed)- liftNode x = clause [conP 'HWitness [conP x []]] (normalB [|const id|]) []+ liftNode x = clause [conP 'HWitness [conP x []]] (normalB [|\_ r -> r|]) [] liftEmbed x = clause [conP 'HWitness [conP x [varP witVar]]] (normalB [|hLiftConstraint $(varE witVar)|]) []
src/Hyper/Unify/Generalize.hs view
@@ -49,7 +49,7 @@ type HNodesConstraint (HFlip GTerm a) c = (c a, Recursive c) type HWitnessType (HFlip GTerm a) = HRecWitness a {-# INLINE hLiftConstraint #-}- hLiftConstraint (HWitness HRecSelf) = const id+ hLiftConstraint (HWitness HRecSelf) = \_ x -> x hLiftConstraint (HWitness (HRecSub c n)) = hLiftConstraintH c n hLiftConstraintH ::
test/LangD.hs view
@@ -6,8 +6,8 @@ newtype A i k = A (B i k) newtype B i k = B (i (k :# A i)) -makeHTraversableApplyAndBases ''A makeHTraversableApplyAndBases ''B+makeHTraversableApplyAndBases ''A newtype C (k :: AHyperType) = C (C k) -- The following doesn't work: