& Ldquo; Современный & Rdquo; HList?

Вы можете сделать это с помощью обычного анонимного класса вместо лямбда:

list.forEach(new Consumer<Example>() {
    int ordinal = 0;
    public void accept(Example s) {
        s.setOrdinal(ordinal);
        ordinal++;
    }
});
30
задан Chris Kuklewicz 23 August 2012 в 00:33
поделиться

1 ответ

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

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

Пакет «records», на который вы ссылаетесь, зависит от пакета «types», который утверждает: ]

«Haskell не поддерживает субкинды и полиморфизм субкидов. Однако этот пакет можно использовать для эмуляции субкиндов переменных типа * и субкадров».

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

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

11
ответ дан Chris Kuklewicz 23 August 2012 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: