Я планирую написать улучшенный GolfScript для еще более коротких программ, которые могут делать больше вещей. Это не проблема; это запрос обратной связи и советы о том, что я должен делать. (см. теги)
Я не уверен, должно ли это быть вики сообщества. Если вы так думаете, просто отметьте модератора, чтобы преобразовать его :)
Этот язык будет очень похож на GolfScript. Это все еще написано на Ruby. Тем не менее, он имеет несколько отличий:
- Использование
`
в качестве разделителя строк, потому что это необычный символ, поэтому потребуется меньше экранирования. (Другой персонаж может заменить свою функцию, например#
(подробнее об этом позже)).\`
избежать\\
обратной черты, избежать обратной косой черты, и нет других escape-последовательностей. Если вам нужна новая строка, просто вставьте фактическую буквальную новую строку в строку. - Использование Ruby's
Rational
для произвольной точности с плавающей точкой, один из главных недостатков GolfScript. - Возможность конвертировать типы в другие типы. Например, вы можете преобразовать блок в строку.
- Регулярные выражения. Вероятно, создан с
"..."
. Операторы также будут перегружены для них. Например,"\W"~{`Invalid: non-word character`}{`OK`}if
. Будет автоматически выполняться при выталкивании из переменной, например, блоков. - Объекты File и Date, чтобы сделать больше вещей, которые были невозможны в GolfScript. Они не будут иметь литералов, но будут иметь функции для их инициализации, такие как
`file.txt`fl
(имя функции создания файла может измениться). - Может быть, хэши, но я не уверен в этом. Нужно ли мне?
- Вспомогательные функции, чтобы сделать еще больше. Например,
`http://example.com`net
для доступа к сети (опять же,net
оператор может быть переименован).rb
выполнить строку как код Ruby. Там будет еще много таких; предложения приветствуются. - Нет комментариев, так что это
#
может быть использовано для чего-то еще. Если вы хотите комментарий,`comment here`;
будет работать нормально. (Может быть,#
может заменить`
функцию) - Он будет полностью переписан так, что будет намного проще добавлять функции. В основном, код будет более читабельным. (Вы видели источник GolfScript?
:/
) - Он будет на Github, поэтому над ним можно будет работать совместно. Я лицензирую это под MIT или что-то.
- Никакого финального перевода строки, так что читы работают: P
И я разделяю их, потому что я думаю, что это самые радикальные и полезные изменения (кроме, возможно, добавления с плавающей запятой):
- Он будет иметь много встроенных функций Ruby. Например,
shuffle
(который может быть сокращен доsf
) (ранее занимал 9 символов ),tr
(ранее 14 символов ),sample
(sm
ранее.,rand=
),flatten
(fl
ранее ???) и т. Д. - Это будет затушевано, как Ребму. Например, теперь вы можете сделать
~:a0<{0a-}aIF
(используя буквенное имя переменной) вместо~:$0<{0$-}$if
(перезаписав функцию сортировки). (пример отсюда ). Обратите внимание, что в этом случае регистр не учитывается, а числа не допускаются в именах переменных. На мой взгляд, это нормально, так как это язык для игры в гольф: P - Это будет иметь отладку. Я добавлю возможность указывать флаг, определяющий разделители массива, разделители элементов и т. Д., Вывод чисел (рациональный, с плавающей запятой или int?), Пошаговое выполнение инструкций по одному, токенизацию и вывод каждого токена вместо запуска программы, и т.п.
Итак, мой вопрос: что тут улучшать? Как вы думаете, я должен добавить?
Любые другие идеи для этого, прежде чем я начну его кодировать?