Ich habe die folgende Definition von HList
:
Wie würde ich die Typen konstruieren, indem ich sie an das Ende angehängt habe?
Das Einfügen als erstes Element ist trivial:
%Vor%Aber Elemente am Ende anzuhängen, während die gleiche Struktur beibehalten wird, scheint hart.
%Vor% Ich weiß, dass die Antwort eine rekursive Funktion ist, die nach der letzten Nil
in der Liste sucht und dort den aktuellen Wert hinzufügt, aber ich habe Schwierigkeiten, eine Funktion für die Eigenschaft zu definieren, die mit einer solchen rekursiven Funktion arbeitet.
Angenommen, wir haben eine Eigenschaft Push
mit der Methode push
, die ein Element in die HList
in der innersten Klammer hinzufügt:
Wie würde man es konstruieren?
Rekursion bei der Verwendung von zugeordneten Typen scheint den Trick zu tun:
%Vor%Es ist wahrscheinlich besser, auf die Zero-Size-Daten ganz zu verzichten und nur mit Typen zu spielen:
%Vor%Auf diese Weise können Ihre Werte Werte bleiben, und wenn Sie Mathe eingeben möchten, instanziieren Sie sie nicht. Hier ist ein vollständiges Beispiel.