Je prévois d'écrire un GolfScript amélioré pour des programmes encore plus courts qui peuvent faire plus de choses. Ce n'est pas un défi; c'est une demande de rétroaction et de conseils sur ce que je dois faire. (voir tags)
Je ne sais pas si cela devrait être un wiki communautaire. Si vous le pensez, il suffit de signaler un modérateur pour le convertir :)
Ce langage sera très similaire à GolfScript. Il est toujours écrit en Ruby. Cependant, il présente quelques différences:
- Utilisation
`
comme délimiteur de chaîne, car il s'agit d'un caractère inhabituel, donc moins d'échappement sera nécessaire. (Un autre personnage peut remplacer sa fonction, comme#
(plus à ce sujet plus tard)).\`
pour échapper à un backtick,\\
pour échapper à une barre oblique inverse, et il n'y a pas d'autres séquences d'échappement. Si vous avez besoin d'une nouvelle ligne, collez simplement une nouvelle ligne littérale réelle dans la chaîne. - Utilisation de Ruby
Rational
pour une virgule flottante de précision arbitraire, l'un des principaux défauts de GolfScript. - La possibilité de convertir des types en d'autres types. Par exemple, vous pouvez convertir un bloc en chaîne.
- Expressions régulières. Probablement créé avec
"..."
. Les opérateurs seront également surchargés pour eux. Par exemple"\W"~{`Invalid: non-word character`}{`OK`}if
,. S'exécute automatiquement lorsqu'il est poussé à partir d'une variable, comme des blocs. - Objets Fichier et Date, pour faire plus de choses qui étaient impossibles dans GolfScript. Ceux-ci n'auront pas de littéraux, mais auront des fonctions pour les initialiser, comme
`file.txt`fl
(le nom de la fonction de création de fichier peut changer). - Hashs peut-être, mais je ne suis pas sûr à ce sujet. Devrais-je?
- Fonctions d'aide pour faire encore plus. Par exemple,
`http://example.com`net
pour l'accès au réseau (encore une fois, l'net
opérateur peut être renommé).rb
pour exécuter une chaîne en tant que code Ruby. Il y en aura beaucoup plus; suggestions bienvenues. - Pas de commentaires, donc ça
#
peut être utilisé pour autre chose. Si vous voulez un commentaire,`comment here`;
cela fonctionnera bien. (Peut-être#
peut remplacer`
la fonction de) - Il sera complètement réécrit de manière à ce qu'il soit beaucoup plus facile d'ajouter des fonctions. Fondamentalement, le code sera plus lisible. (Avez-vous vu la source GolfScript?
:/
) - Il sera sur Github afin qu'il puisse être travaillé en collaboration. Je vais le concéder sous licence MIT ou quelque chose.
- Pas de nouvelle ligne finale, donc les quines tricheuses fonctionnent: P
Et je les distingue parce que je pense que ce sont les changements les plus drastiques et les plus utiles (sauf peut-être l'ajout de virgule flottante):
- Il aura de nombreuses fonctions Ruby intégrées. Par exemple,
shuffle
(qui peut être abrégé ensf
) (a précédemment pris 9 caractères ),tr
(auparavant 14 caractères ),sample
(sm
, précédemment.,rand=
),flatten
(fl
, précédemment ???), etc. - Il sera écrasé, comme Rebmu. Par exemple, vous pouvez maintenant faire
~:a0<{0a-}aIF
(en utilisant un nom de variable de lettre) au lieu de~:$0<{0$-}$if
(écraser la fonction de tri). (exemple d'ici ). Notez que de cette façon, il ne respecte pas la casse et les nombres ne sont pas autorisés dans les noms de variables. C'est correct à mon avis car c'est une langue de golf: P - Il aura un débogage. J'ajouterai la possibilité de fournir un indicateur spécifiant les délimiteurs de tableau, les délimiteurs d'éléments, etc., la sortie numérique (rationnelle, flottante ou int?), Parcourant les instructions une par une, jetant et sortant chaque jeton au lieu d'exécuter le programme, etc.
Alors, ma question est: qu'est-ce qu'il y a à améliorer? Que pensez-vous que je devrais ajouter?
Avez-vous d'autres idées à ce sujet avant de commencer à le coder?