Я планирую написать улучшенный 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?), Пошаговое выполнение инструкций по одному, токенизацию и вывод каждого токена вместо запуска программы, и т.п.
Итак, мой вопрос: что тут улучшать? Как вы думаете, я должен добавить?
Любые другие идеи для этого, прежде чем я начну его кодировать?