Понимание этого определения HList

Я относительно новичок в Хаскеле, и я пытаюсь понять одно из определенийHList.

data instance HList '[] = HNil
newtype instance HList (x ': xs) = HCons1 (x, HList xs)
pattern HCons x xs = HCons1 (x, xs)

У меня есть пара конкретных вопросов:

Что'[] а также(x ': xs) синтаксис я вижу? Похоже, что это сопоставление с образцом для параметров типа variadic, но я никогда раньше не видел этот синтаксис, и я не знаком с параметрами типа variadic в Haskell. Я думаю, это частьТип семьи GHC, но я не вижу ничего об этом на связанной странице, и довольно сложно найти синтаксис в Google.

Есть ли смысл использоватьnewtype объявление с кортежем (вместоdata объявление с двумя полями) кроме того, чтобы избежать боксаHCons1?

Ответы на вопрос(2)

Ваш ответ на вопрос