On 22 February 2014 03:11, Cédric Beust ♔ <[email protected]> wrote:
> On Fri, Feb 21, 2014 at 5:47 PM, Ricky Clarkson > <[email protected]>wrote: > >> To me, List(1, "a") should be a type error as it is in Haskell ([1, "a"]) >> > > I sympathize with this view. I can't remember last time I needed a > heterogeneous list and if I came upon such a need, I would probably try to > capture some commonality of all the elements in a trait and parameterize my > list on that. > > Absolutely! There's a strong movement in the Scala community to ban the `Any`, `AnyRef` and `AnyVal` from ever being inferred for this exact reason. I'd also like a means in the standard library to context bound the entire list, and enforce that all members belong to some type class - even if there's no common superclass involved. As for HLists, they can fit in anywhere you'd use a Tuple, and give you extra flexibility over the number of members (amongst other things). So you could imagine them being used as an argument list to a function, for serialisation/deserialisation scenarios, as a representation of values in a case class, etc. Note that shapeless also has the Record type, which extends the same sort of logic into a hetrogenous map. It retains the exact type of all the members just as an HList does, but additionally allows lookup using singleton keys. > But the discussion is still worth having even if it's a bit theoretical > because there are still a lot of unsolved questions surrounding the > interaction of variance and parametric polymorphism and I'd really like to > go down that rabbit hole to find out if a solution is workable or if ad hoc > polymorphism is the only reasonable way out. > You *definitely* want to be keeping an eye on Dotty then :) -- You received this message because you are subscribed to the Google Groups "Java Posse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/javaposse. For more options, visit https://groups.google.com/groups/opt_out.
