In formlos, haben zwei Listen, so dass eine Typklassen der anderen enthält

8

In formlosem Zustand versuche ich eine Funktion zu schreiben, die zwei HLists l1 und l2 beliebiger Länge benötigt, die folgende Eigenschaften aufweisen:

  1. Länge von l1 und l2 sind gleich
  2. l2 enthält die genauen Typen von l1 , die in einen Konstantenkonstanten-Konstruktor eingebettet sind.

Also, wenn l1

war %Vor%

l2 könnte

sein %Vor%

Durch die Verwendung von UnaryTCConstraint und LengthAux kann ich die Längen beschränken und einen statischen äußeren Konstruktor für l2 benötigen. Die Anpassung an sie ist jedoch zu einem Problem geworden.

Irgendwelche Ideen, wie ich das machen könnte?

    
Refefer 08.01.2014, 19:03
quelle

1 Antwort

9

Mapped liefert genau diese Einschränkung ohne die zusätzliche Notwendigkeit von Length . Von die Dokumentation :

  

Geben Sie die Klasse ein, die bezeugt, dass das Ergebnis des Umbruchs jedes Elements von    HList L im Typenkonstruktor F ist Out .

So sieht es in 1.2.4 aus:

%Vor%

Und dann:

%Vor%

Wie erwartet. Für 2.0 fügen Sie einfach einen shapeless.ops.hlist._ import hinzu und ersetzen Sie MappedAux durch Mapped.Aux und schon kann es losgehen.

    
Travis Brown 08.01.2014, 19:52
quelle

Tags und Links