Я планую написати вдосконалений GolfScript для ще коротших програм, які можуть робити більше справ. Це не виклик; це запит про зворотний зв'язок та підказки щодо того, що мені робити. (див. теги)
Я не впевнений, чи має це бути Community Wiki. Якщо ви так вважаєте, просто позначте модератора, щоб перетворити його :)
Ця мова буде дуже схожа на GolfScript. Це все ще написано в Рубі. Однак він має кілька відмінностей:
- Використовуючи
`
як роздільник рядків, тому що це нечастий характер, тому знадобиться менше пробігу. (Інший символ може замінити свою функцію, як-от#
(докладніше про це пізніше)).\`
уникати\\
зворотного вибору, уникати зворотної косої риси, а інших послідовностей втечі немає. Якщо вам потрібен новий рядок, просто вставте фактичний буквальний новий рядок у рядку. - Використання Ruby's
Rational
для довільної точності з плаваючою точкою, один з головних недоліків GolfScript. - Можливість перетворення типів в інші типи. Наприклад, ви можете перетворити блок в рядок.
- Регулярні вирази. Ймовірно, створений с
"..."
. Оператори також будуть перевантажені для них. Наприклад,"\W"~{`Invalid: non-word character`}{`OK`}if
. Автоматично виконується при натисканні зі змінної, як блоки. - Файли та об’єкти дати, щоб зробити більше речей, які були неможливі в 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?), Переглядаючи інструкції по черзі, токенізуючи та виводячи кожен маркер замість запуску програми, тощо.
Отже, моє запитання: що тут вдосконалити? Як ви думаєте, що я повинен додати?
Будь-які інші ідеї для цього, перш ніж почати його кодувати?