Ich plane, ein verbessertes GolfScript für noch kürzere Programme zu schreiben, die mehr können. Dies ist keine Herausforderung. Es ist eine Bitte um Feedback und Tipps, was ich tun soll. (siehe tags)
Ich bin mir nicht sicher, ob dies Community Wiki sein soll. Wenn Sie so denken, markieren Sie es einfach, damit ein Moderator es konvertiert :)
Diese Sprache wird GolfScript sehr ähnlich sein. Es ist immer noch in Ruby geschrieben. Es gibt jedoch einige Unterschiede:
- Wird
`
als Zeichenkettenbegrenzer verwendet, da es sich um ein ungewöhnliches Zeichen handelt, sodass weniger Escapezeichen erforderlich sind. (Ein anderes Zeichen kann seine Funktion ersetzen, wie#
(dazu später mehr)).\`
einem Backtick\\
zu entkommen, einem Backslash zu entkommen, und es gibt keine anderen Escape-Sequenzen. Wenn Sie eine neue Zeile benötigen, kleben Sie einfach eine tatsächliche wörtliche Zeile in die Zeichenfolge. - Die Verwendung von Ruby's
Rational
für Gleitkommazahlen mit willkürlicher Genauigkeit ist einer der Hauptfehler von GolfScript. - Die Möglichkeit, Typen in andere Typen zu konvertieren. Sie können beispielsweise einen Block in eine Zeichenfolge konvertieren.
- Reguläre Ausdrücke. Wahrscheinlich erstellt mit
"..."
. Die Operatoren werden auch für sie überlastet. Zum Beispiel"\W"~{`Invalid: non-word character`}{`OK`}if
. Wird automatisch ausgeführt, wenn von einer Variablen wie Blöcken gedrückt wird. - Datei- und Datumsobjekte, um mehr Dinge zu tun, die in GolfScript nicht möglich waren. Diese haben keine Literale, aber Funktionen zum Initialisieren, wie zB
`file.txt`fl
(der Name der Funktion zum Erstellen von Dateien kann sich ändern). - Haschs vielleicht, aber da bin ich mir nicht sicher. Sollte ich?
- Der Helfer kann noch mehr. Zum Beispiel
`http://example.com`net
für den Netzwerkzugriff (erneut kann dernet
Betreiber umbenannt werden).rb
um einen String als Ruby-Code auszuführen. Es wird noch viel mehr davon geben; Vorschläge willkommen. - Keine Kommentare, so dass
#
für etwas anderes verwendet werden kann. Wenn Sie einen Kommentar wünschen,`comment here`;
wird gut funktionieren. (Vielleicht#
kann`
's die Funktion ersetzen ) - Es wird komplett neu geschrieben, so dass das Hinzufügen von Funktionen viel einfacher wird. Grundsätzlich ist der Code besser lesbar. (Haben Sie die GolfScript-Quelle gesehen?
:/
) - Es wird auf Github sein, damit gemeinsam daran gearbeitet werden kann. Ich werde es unter MIT lizenzieren oder so.
- Keine abschließende Newline, daher funktionieren betrügerische Quines: P
Und ich setze diese Punkte auseinander, weil ich denke, dass sie die drastischsten und hilfreichsten Änderungen sind (außer vielleicht das Hinzufügen von Gleitkommazahlen):
- Es werden viele Ruby-Funktionen eingebaut. Zum Beispiel
shuffle
(was abgekürzt werden kannsf
) (früher 9 Zeichen ),tr
(früher 14 Zeichen ),sample
(sm
früher.,rand=
),flatten
(fl
früher ???) usw. - Es wird wie Rebmu gemixt. Zum Beispiel können Sie jetzt
~:a0<{0a-}aIF
(unter Verwendung eines Buchstabenvariablennamens) anstatt~:$0<{0$-}$if
(die Sortierfunktion zu überschreiben). (Beispiel von hier ). Beachten Sie, dass auf diese Weise die Groß- und Kleinschreibung nicht berücksichtigt wird und in Variablennamen keine Zahlen zulässig sind. Dies ist meiner Meinung nach in Ordnung, da es eine Golfsprache ist: P - Es wird ein Debugging haben. Ich werde die Möglichkeit hinzufügen, ein Flag bereitzustellen, das Array-Begrenzer, Element-Begrenzer usw. angibt, die Ausgabe von Zahlen (rational, float oder int?), Schrittweise Anweisungen durchläuft, jedes Token tokenisiert und ausgibt, anstatt das Programm auszuführen. etc.
Meine Frage lautet also: Was gibt es zu verbessern? Was denkst du sollte ich hinzufügen?
Irgendwelche anderen Ideen dafür, bevor ich anfange, es zu codieren?