2016-10-29 3 views

Antwort

3

Dies ist eine schwierige Frage zu beantworten, da Sie eine Reihe von verschiedenen Gründen dafür haben können.

1) Sie möchten in der Lage zu ändern, was eine Bindung gebunden ist. In diesem Fall wären Sie vielleicht mit set! glücklich. Beispiel:

2) Sie möchten Code über mehrere Schemaimplementierungen ausführen.

In diesem Fall verwenden Sie etwas wie #lang r5rs.

3) Sie finden define ästhetisch ansprechender als set!

Hier ist die Antwort komplizierter: Racket ist eine programmierbare Programmiersprache, und Sie können leicht Ihre eigene Version von Racket machen, das die Semantik hat Sie wollen. Allerdings ist Racket bewusst nicht entworfen, um diese Semantik zu haben, weil das Lesen von Code in diesem Stil geschrieben schwierig ist; In einer großen Datei und einer Sprache, die mehrere Definitionen erlaubt, kann ein Leser leicht die falsche Definition finden und annehmen, dass es die einzige ist.

Hilft das?

+0

Ich denke, es könnte helfen zu verstehen, was meine Argumentation dafür ist. Ich versuche, OCaml-Programme in Racket zu konvertieren, und da dieses Verhalten in OCaml gültig ist, wäre ein schneller Weg, dies auch in Racket zu tun, nützlich. Davon abgesehen bin ich mir nicht sicher, wie man im Racket Regeln für Benutzer-Syntax, Makros usw. programmiert. Wäre so etwas wie ein Schlüsselwort zu begrenzen, um "define" zu verwenden, wenn der Bezeichner nicht gebunden ist, andernfalls set verwenden! im Racket möglich sein? – podington

+1

@podington Versuchen Sie die Lösung in diesem aktuellen Thread: https://groups.google.com/forum/#!topic/racket-users/vMvHN-OMv7A – soegaard

+0

Das hat den Trick gemacht. Vielen Dank! – podington

Verwandte Themen