Вопрос для любого из этих пакетов - это сфера его целей. HList - это на самом деле 5 различных реализаций меток, две с равенством типов, две с приведением типа, две из Record / RecordP и выбор Variant vs TIC. Все они похожи, но это разные компромиссы в простоте использования, переносимости и используемых расширениях.
Новые функции GHC (GADT, связанные типы, типы ограничений, полиморфные типы, синглтон-типы) могут допускать несколько другие компромиссы. В частности, одноэлементные типы могут предоставлять более совершенные метки, а полиморфные типы могут предоставлять более элегантные Typeable / Data / Generics.
Пакет «records», на который вы ссылаетесь, зависит от пакета «types», который утверждает: ]
«Haskell не поддерживает субкинды и полиморфизм субкидов. Однако этот пакет можно использовать для эмуляции субкиндов переменных типа * и субкадров».
Но это уже не так правда благодаря продвижению типа данных к видам в новых версиях GHC. Так что этот пакет на январь 2012 года может устареть.
Что касается записей, возможно, новая система будет опираться на последний раунд полиморфных линз: объектив и / или семейство линз .
Может быть, вы используете прокси-сервер (squid), который управляет HTTP-запросами?
Это известная ошибка в Apache. См. Ошибка Apache № 45023 и сводку etags Apache 304 и mod_deflate .
Восстановление из svn устранит проблему. Решением было отменить изменение, добавляющее "-gzip" к etag. Однако существуют связанные проблемы с совместимостью с HTTP.
Если вы не можете перестроить Apache, в отчете об ошибке есть предлагаемый обходной путь конфигурации среды выполнения:
RequestHeader edit "If-None-Match" "^\"(.*)-gzip\"$" "\"$1\""
Header edit "ETag" "^\"(.*[^g][^z][^i][^p])\"$" "\"$1-gzip\""