это:
Existential types can be used for several different purposes. But what they do is to 'hide' a type variable on the right-hand side.
Normally, any type variable appearing on the right must also appear on the left
Using existential types, we can avoid this:
data Worker x y = forall b. Buffer b => Worker {buffer :: b, input :: x, output :: y}
foo :: Worker Int Int
я такое и хочу, и попробовал заюзать новую фичу, но не вышло:
https://play.rust-lang.org/?gist=1e163778b72bcfbdf64f73396bf96053&version=nightly&mode=debug&edition=2015
: type parameter Cd is part of concrete type but not used in parameter list for existential type
то есть требуют протащить, а мне как раз этого не хочется:
https://play.rust-lang.org/?gist=f35cd83b8456908b50addf25aec5a038&version=nightly&mode=debug&edition=2015
это я чот не так делаю, или чуваки не докомитали целиком всё?
В Haskell это плохой пример. Можно сказать, использование existential types in data constructors is depricated.
Обсуждают сегодня