PiSigma: Warum bindet 'entfalten' eine Variable?

8

Ich versuche, das Papier zu verstehen: Abhängige Typen ohne Zucker, indem ich einen Interpreter und eine Typprüfung für die Sprache implementiere. Dabei habe ich gesehen, dass die unfold t as x -> uSyntax für rekursive Definitionen (die Syntax ist in Abschnitt 2.1 definiert) eine Variable bindet, aber ich verstehe nicht, warum dies erforderlich ist. Keines der Beispiele in diesem Artikel verwendet tatsächlich die variable Bindung - alle verwenden eine Kurzform unfold t(Bedeutung unfold t as x -> x).

Ich kann sehen , dass der Typ für sie (aus dem Abschnitt 5) verwendet die variable Prüfregel verbindlich, aber ich verstehe nicht , die Auswirkungen dieses. Soweit ich das beurteilen kann, unfold t as x -> uist das völlig gleichbedeutend mit let x = unfold t in u.

Kann jemand ein Beispiel dafür geben, wann die Variablenbindung hilfreich oder notwendig ist? Gibt es einen Begriff, der unfoldmit der Langform und nicht mit der Kurzform und prüft let?

Steve Trout
quelle
Ich würde die Typprüfungsregel zitieren, aber mein Wissen über LaTeX ist zu begrenzt. Würde ein freundlicher Redakteur das für mich tun? Vielen Dank!
Steve Trout

Antworten:

1

Ich glaube nicht, dass es einen magischen / notwendigen Grund gibt. IMO, es wurde so geschrieben, um klarer zu machen, dass unfoldes sich um eine Analyse- / Überprüfungseliminierungsregel handelt. genauso wie warum splitso geschrieben ist, wie es ist, anstatt als erste und zweite Projektion geschrieben zu werden, und warum caseso geschrieben wird, wie es ist, anstatt wie uneitherin Haskell geschrieben zu werden.

Beachten Sie beim "analytischen" Bit, dass die anderen Eliminierungsregeln entweder synthetisch / ableitend (Beta) oder bidirektional (Bang) sind.

Zaunkönig Romano
quelle
Ah, ich sehe dort den Unterschied. Das ist ein möglicher Grund, warum !xnicht geschrieben force x as y -> y. Ob es einen tieferen Grund gibt oder nicht, diese Antwort befriedigt meine Neugier. Vielen Dank!
Steve Trout