Załóżmy, że chcesz mieć coś w rodzaju variadic templates (możliwość definiowania parametrów typu n dla klasy ogólnej) w Scali.Emulacja szablonów variadycznych w Scali
Na przykład nie chcesz definiować Tuple2[+T1, +T2]
i Tuple3[+T1, +T2, +T3]
, ale Tuple[T*]
.
Czy istnieją inne opcje niż HLists, które wspierałyby produkt Tuple, produkt i funkcję?
Zakładam, że możesz przetasować własną wersję HList, ale dlaczego? Czy możesz wskazać, w jaki sposób twoja wyobrażona opcja różni się od HList? –
Definicja typu po stronie użytkownika jest nieco skomplikowana, jak na mój gust. Idealne rozwiązanie pozwoliłoby na bardziej naturalną definicję typu Tuple [T1, T2, T3] podobną do TupleX już w bibliotekach Scala. Dodatkowo powinna obsługiwać inne typy, takie jak funkcja i produkt. –
Ale Scala już oferuje, a HList używa, trochę cukru syntaktycznego, aby zmniejszyć tę złożoność. Na przykład zobacz definicję tego typu z linku HList: 'val list: Int :: String :: Boolean :: HNil = ...'. –