Например, скажем, у меня есть [Либо Int Bool], и я хочу, чтобы преобразовать его в HList .... такМожно ли преобразовать список «Либо» в «HList» в Haskell?
[Left 1, Right False, Left 2]
станет
1 .*. False .*. 2 .*. HNil
(я на самом деле думаю, что это невозможно, но хотелось бы услышать иначе .... даже писать тип для такой функции кажется невозможным, хотя, возможно, есть способ сделать это, что связано не только с написанием функции).
Я подозревал, что ... Это ограничение времени компиляции означает, что HList - это довольно много кортежей (плюс, по общему признанию, полезная функция добавления)? – jamshidh
Да, по этому свойству они очень похожи. Фактически, с самым примитивным подходом ваш HList может быть закодирован как «(1, (False, (2,())). Однако мощность HList находится в программировании на уровне типа (компиляции). Фактическое поле их применения очень ограничено и, кажется, более академично, чем практично. Изучение типов семей может помочь в понимании целей HLists. –