Call-by-Name Doppelpunktoperator und Rauminkohärenz kombinieren [duplizieren]

8

Hier ist das folgende Problem. Wenn ich folgendes führe:

%Vor%

Es druckt:

%Vor%

Allerdings habe ich erwartet, dass es gedruckt wird:

%Vor%

seit der letzte Ausdruck angeblich umgeschrieben wurde Test./:(println("A")) - was übrigens den zweiten Wert ergibt.

Kennt jemand einen Weg, um die erste Syntax zu arbeiten, z.B. println("A") /: Test aber mit Call-by-Name?

Bearbeiten

Mit der Methode desugar fand ich heraus, dass die Aufrufe anders entzuckert sind.

%Vor%

Daher frage ich mich immer noch, warum diese Wahl.

    
Mikaël Mayer 06.04.2017, 12:52
quelle

2 Antworten

10

Es ist ein bekanntes Problem . Wenn Sie mit der Option -Xlint kompilieren, sollten Sie eine Warnung sehen.

%Vor%     
Chetan Kumar Meena 06.04.2017, 13:40
quelle
0

Das Problem, ich denke, ist die Tatsache, dass Sie einen Namensparameter vom Typ Unit erwarten - es gibt nur eine Einheit, daher der Name: () .

Ich fand die folgenden Arbeiten:

%Vor%     
Yaneeve 06.04.2017 13:39
quelle

Tags und Links