Подтвердить что ты не робот

"Современный" HList?

Пакет HList был основан на том, что в настоящее время является древней технологией Haskell. Простой вопрос: учитывая все замечательные новые черты за последние 8 лет развития Haskell/GHC, будет ли "современный" HList построен по-разному? Я понимаю, что ответ здесь может быть no, что для конкретного случая HList используемая технология все же производит наиболее элегантное решение.

Я прочитал многие элементы, описанные на странице расширяемые записи, единственный реальный конкурент (то есть тот, который реализован как библиотека, доступная для взлома) - это записать пакет. Или есть недостающие ссылки из расширяемых записей?

4b9b3361

Ответ 1

Вопрос для любого из этих пакетов - это объем его целей. HList - это на самом деле 5 различных реализаций меток, два типа равенства, два типа литья, два из Record/RecordP и выбор Variant vs TIC. Все похожие, но разные компромиссы простоты использования, переносимости и расширений.

Новые функции GHC (GADT, связанные типы, типы ограничений, полиморфные виды, одноэлементные типы) могут допускать несколько разные компромиссы. В частности, одноэлементные типы могут допускать более яркие метки, а полиморфные типы могут позволить более элегантный Typeable/Data/Generics.

Пакет "записи", на который вы ссылаетесь, зависит от пакета "виды", который утверждает:

"Haskell не поддерживает подкиды и полиморфизм подкидышей. Однако этот пакет можно использовать для подражания подкиды рода * и subkind variables."

Но это уже не так, благодаря продвижению типа данных к видам в новых версиях GHC. Так что этот пакет в январе 2012 года может быть отчасти устаревшим.

Что касается записей, возможно, новая система будет извлекать из последнего раунда полиморфных линз: lens и/или lens-family.