Schreibe Ceylon wie der Union-Typ in Scala und verwende einen Alias ​​für Entweder

9

Mit der Veröffentlichung von Ceylon 1.0 diskutieren einige Leute die Nützlichkeit von Unionstypen. Ich habe mich gefragt, wie kurz Sie den folgenden Code schreiben könnten:

%Vor%

... in Scala? Meine Idee war so:

%Vor%

Aber der Musterextraktor wird nicht kompiliert. Irgendwelche Ideen?

Ich weiß dass eine ähnliche Frage existiert mit einigen funktionierenden Antworten , aber ich frage mich speziell, ob man einen Typ-Alias ​​für Either und Extraktoren verwenden kann oder nicht. Selbst wenn eine neue Typklasse als Either definiert wird, sollte die Lösung eine erschöpfende Musterübereinstimmung zulassen.

    
0__ 14.11.2013, 13:05
quelle

4 Antworten

0

Für den Datensatz hat Dotty Union-Typen, also wäre das Beispiel

%Vor%

( Scastie-Link )

    
0__ 26.12.2017, 15:37
quelle
0

Hier ist ein zweiter Versuch, falls es hilft. Es schlägt mit impliziter Auflösung fehl:

%Vor%

%Vor%     
0__ 14.11.2013 13:27
quelle
0

Mein Versuch. Ohne generische Extraktoren. Ich werde versuchen darüber nachzudenken, wie ich es später bekomme.

%Vor%     
Sergey Passichenko 14.11.2013 18:21
quelle
0

Ich habe auch eine mehr oder weniger funktionierende Implementierung von Miles Sabins C-H-Idee (oben verlinkt). Ich bin mir nicht sicher, ob dies Ihre Frage direkt anspricht, aber vielleicht ist dies ein nützlicher Denkanstoß.

Der Quellcode ist in dieses Projekt auf GitHub .

Hier ein kurzes Anwendungsbeispiel:

%Vor%

Außerdem wird eine Klasse zum Boxen dieser Typen bereitgestellt, da dies oft nützlich ist:

%Vor%

Noch eine interessante Sache ist, dass die API zulässt, dass Union-Typen jeweils zu einem Zeitpunkt einen Member-Typ aufbauen:

%Vor%     
Connor Doyle 14.11.2013 21:59
quelle

Tags und Links