type ShapeOf :: forall (n :: Nat) . Shape n -> Nat type family ShapeOf shape where forall (n :: Nat) . ShapeOf ('Alpha @n) = n
Супер, спасибо, не знал это это валидный синтакс. Забавно что EMACS forall здесь не подсвечивает. И еще где-то видел не подсвечивает, кажется в инстансе или тайп-классе видел с причудливыми констрейнтами, но сейчас не воспроизведу.
Обсуждают сегодня