Saya berencana untuk menulis GolfScript yang ditingkatkan untuk program yang lebih pendek yang dapat melakukan lebih banyak hal. Ini bukan tantangan; itu adalah permintaan umpan balik dan tip tentang apa yang harus saya lakukan. (lihat tag)
Saya tidak yakin apakah ini harus Wiki Komunitas. Jika Anda berpikir begitu, cukup tandai moderator untuk mengonversinya :)
Bahasa ini akan sangat mirip dengan GolfScript. Itu masih ditulis dalam Ruby. Namun, ada beberapa perbedaan:
- Menggunakan
`
sebagai pembatas string, karena itu adalah karakter yang tidak biasa, jadi lebih sedikit melarikan diri akan diperlukan. (Karakter lain dapat menggantikan fungsinya, seperti#
(lebih banyak tentang itu nanti)).\`
untuk menghindari backtick,\\
untuk menghindari backslash, dan tidak ada urutan melarikan diri lainnya. Jika Anda membutuhkan baris baru, cukup taruh baris baru yang sebenarnya dalam string. - Menggunakan Ruby
Rational
untuk floating point presisi sembarang, salah satu kelemahan utama GolfScript. - Kemampuan untuk mengkonversi tipe ke tipe lain. Misalnya, Anda dapat mengonversi blok ke string.
- Ekspresi reguler. Mungkin dibuat dengan
"..."
. Operator juga akan kelebihan beban untuk mereka. Sebagai contoh"\W"~{`Invalid: non-word character`}{`OK`}if
,. Secara otomatis akan dieksekusi ketika didorong dari variabel, seperti blok. - File dan objek Tanggal, untuk melakukan lebih banyak hal yang tidak mungkin di GolfScript. Ini tidak akan memiliki literal, tetapi akan memiliki fungsi untuk menginisialisasi mereka, seperti
`file.txt`fl
(nama fungsi pembuatan file dapat berubah). - Hash mungkin, tapi saya tidak yakin itu. Haruskah saya?
- Fungsi pembantu untuk melakukan lebih banyak lagi. Misalnya,
`http://example.com`net
untuk akses jaringan (sekali lagi,net
operator dapat diganti namanya).rb
untuk mengeksekusi string sebagai kode Ruby. Akan ada lebih banyak dari ini; saran diterima. - Tidak ada komentar, sehingga
#
bisa digunakan untuk hal lain. Jika Anda ingin komentar,`comment here`;
akan berfungsi dengan baik. (Mungkin#
bisa menggantikan`
fungsi) - Ini akan sepenuhnya ditulis ulang sedemikian rupa sehingga akan lebih mudah untuk menambahkan fungsi. Pada dasarnya, kode akan lebih mudah dibaca. (Pernahkah Anda melihat sumber GolfScript?
:/
) - Itu akan ada di Github sehingga bisa dikolaborasikan secara bersama. Saya akan melisensikannya di bawah MIT atau sesuatu.
- Tidak ada baris akhir, jadi quine cheaty berfungsi: P
Dan saya memisahkan ini karena saya pikir itu adalah perubahan yang paling drastis dan bermanfaat (kecuali mungkin menambahkan floating point):
- Ini akan memiliki banyak fungsi Ruby bawaan. Misalnya,
shuffle
(yang dapat disingkat menjadisf
) (sebelumnya mengambil 9 karakter ),tr
(sebelumnya 14 karakter ),sample
(sm
, sebelumnya.,rand=
),flatten
(fl
, sebelumnya ???), dll. - Itu akan menjadi bubur, seperti Rebmu. Misalnya, sekarang Anda dapat melakukan
~:a0<{0a-}aIF
(menggunakan nama variabel huruf) alih-alih~:$0<{0$-}$if
(menimpa fungsi pengurutan). (contoh dari sini ). Perhatikan bahwa cara ini tidak peka terhadap huruf besar-kecil, dan angka tidak diperbolehkan dalam nama variabel. Ini tidak apa-apa menurut saya karena ini adalah bahasa golf: P - Ini akan memiliki debugging. Saya akan menambahkan kemampuan untuk menyediakan flag yang menentukan pembatas array, pembatas elemen, dll., Keluaran angka (rasional, float, atau int?), Melangkah melalui instruksi satu per satu, tokenizing dan outputing setiap token alih-alih menjalankan program, dll.
Jadi, pertanyaan saya adalah: apa yang harus diperbaiki? Menurut Anda apa yang harus saya tambahkan?
Ada ide lain untuk ini, sebelum saya mulai mengkodekannya?