VY
decidable equality короче) понятно теперь как это работает
Size: a a a
VY
VY
Eq1, но не очень понимал зачем я это делаю 😂 просто тупо потому что компилятор просил лолЗП
ЗП
VY
data Rose f a = Branch a (f (Rose f a))(хотя я никогда им не пользовался в х-е)
instance (Eq a, forall b. (Eq b) => Eq (f b))
=> Eq (Rose f a)
where ...
ЗП
ЗП
class (forall x. Functor (f x)) => Bifunctor f where
bimap :: forall a b c d. (a -> b) -> (c -> d) -> f a c -> f b d
lmap :: forall a b c. (a -> b) -> f a c -> f b c
lmap f = bimap f id
class (forall x. Functor (f x)) => Profunctor f where
dimap :: forall a b c d. (a -> b) -> (c -> d) -> f b c -> f a d
lcmap :: forall a b c. (a -> b) -> f b c -> f a c
VY
Profunctor1ЗП
ЗП
ЗП
ЗП
VY
ЗП
VY
ЗП
ЗП
data MyFree f a = MyPure a | MyFree (f (MyFree f a))
instance (Eq a, forall b. Eq b => Eq (f b)) => Eq (MyFree f a) where
(MyPure a) == (MyPure b) = a == b
(MyFree as) == (MyFree bs) = as == bs
_ == _ = False
ЗП
Show в случае чего-то такогоimport Matryoshka (class Corecursive, Algebra, embed)
-- | Formula expression.
data FormulaF a
= FooF (Intersection a)
| BarF (Intersection a)
-- ...
| LiteralF String
derive instance functorFormulaF ∷ Functor FormulaF
type Formula = Mu FormulaF
type FormulaAlgebra a = Algebra FormulaF a
derive instance genericFormulaF ∷ Generic FormulaF _
instance showFormulaF ∷ Show a ⇒ Show (FormulaF a) where
show = genericShow
Mu все пишешьЗП
ЗП