L
class Contextual (container :: * -> [*] -> *)
class (∀a b (t :: a -> b -> *). Contextual t, Contains Fresh b ~ True)
=> Canonnical t
почему жшс орёт что б не в скоупе? и можно ли обращаться к [*]?
∀a b (t :: a -> b -> *). Contains Fresh b ~ True => Contextual t
то b в скоупе. А то там же кортеж, а forall связывается с элементом кортежа. Но всё равно не получится, потому что b
не kind, и DataKinds не промоутятся. Поэтому сослаться на b :: [*]
в kind-сигнатуре уже нельзя.Более того, если
b :: [*]
, то значит b ~ '[x, y, z, ...]
. Но это довольно абсурдный kind даже если бы он промоутился! b :: [*]
не значит что b ~ [*]
.Я так понимаю идея в том чтобы привязаться к конкретному typelevel списку. Так это сделать не получится, у
container
никакого списка ещё нет, он его только ждёт. И ведь любой подойдёт ему.