Daha fazla şey yapabilen daha kısa programlar için geliştirilmiş bir GolfScript yazmayı planlıyorum. Bu bir zorluk değil; ne yapmam gerektiğine dair geri bildirim ve ipuçları için bir istek. (etiketlere bakın)
Bunun Community Wiki olup olmayacağından emin değilim. Bunu düşünüyorsanız, dönüştürmek için bir moderatör için işaretleyin :)
Bu dil GolfScript'e çok benzer. Hala Ruby'de yazılmıştır. Ancak, birkaç farklılığı vardır:
- Yaygın
`
olarak kullanılan bir karakter olduğu için dize sınırlayıcı olarak kullanıldığından, daha az kaçış gerekecektir. (Başka bir karakter işlevini değiştirebilir, örneğin#
(daha sonra daha fazla)). bir ters\`
çividen\\
kaçmak, bir ters eğik çizgiden kaçmak ve başka kaçış dizisi yok. Bir satırsonuna ihtiyacınız varsa, dizeye gerçek bir satırsonu satırını yapıştırmanız yeterlidir. Rational
GolfScript'in en büyük kusurlarından biri olan keyfi hassas kayan nokta için Ruby'nin s'yi kullanın.- Türleri diğer türlere dönüştürme yeteneği. Örneğin, bir bloğu dizeye dönüştürebilirsiniz.
- Düzenli ifadeler. Muhtemelen ile yaratılmıştır
"..."
. Operatörler onlar için de aşırı yüklenecek. Örneğin"\W"~{`Invalid: non-word character`}{`OK`}if
,. Bloklar gibi bir değişkenden itildiğinde otomatik olarak yürütülür. - Dosya ve Tarih nesneleri, GolfScript'te imkansız olan daha fazla şey yapmak için. Bunlar değişmez değerlere sahip olmayacak, ancak bunları başlatmak için işlevlere sahip olacaktır, örneğin
`file.txt`fl
(dosya oluşturma işlevinin adı değişebilir). - Hashler belki, ama bundan emin değilim. Yapmalımıyım?
- Daha da fazlasını yapmak için yardımcı işlevler. Örneğin,
`http://example.com`net
ağ erişimi için (tekrar,net
operatör yeniden adlandırılabilir).rb
bir dizeyi Ruby kodu olarak yürütmek için. Bunlardan çok daha fazlası olacak; önerilerinizi bekliyoruz. - Yorum yok, bu yüzden
#
başka bir şey için kullanılabilir. Bir yorum istiyorsanız,`comment here`;
iyi çalışır. (Belki 'işlevini#
değiştirebilirsiniz`
) - Fonksiyon eklemenin çok daha kolay olacağı şekilde tamamen yeniden yazılacaktır. Temel olarak, kod daha okunabilir olacaktır. (GolfScript kaynağını gördünüz mü?
:/
) - Birlikte çalışılabilmesi için Github'da olacak. Bunu MIT veya benzeri bir şey altında lisanslayacağım.
- Son satırsonu yok, bu yüzden ucuz ayinler işe yarıyor: P
Ve ben bunları birbirinden ayırıyorum çünkü en sert ve yararlı değişiklikler olduklarını düşünüyorum (belki kayan nokta eklemek hariç):
- Dahili birçok Ruby fonksiyonuna sahip olacak. Örneğin,
shuffle
(sf
daha önce 9 karakter aldı ),tr
(önceden 14 karakter ),sample
(sm
, önceden.,rand=
),flatten
(fl
, önceden ???) vb. - Rebmu gibi mantarlanacak. Örneğin, şimdi (sıralama işlevinin üzerine yazmak
~:a0<{0a-}aIF
) yerine (bir harf değişkeni adı kullanarak~:$0<{0$-}$if
) yapabilirsiniz. ( buradan örnek ). Bu şekilde büyük / küçük harfe duyarsız olduğunu ve değişken adlarında sayılara izin verilmediğini unutmayın. Bence bu bir golf dili olduğu için sorun değil: P - Hata ayıklama olacak. Dizi sınırlayıcıları, öğe sınırlayıcıları vb. Belirten bir bayrak sağlama yeteneğini ekleyeceğim, sayı çıktısı (rasyonel, kayan nokta veya int?), Her seferinde bir adım adım atma, programı çalıştırmak yerine her jetonu belirleme ve çıktı verme, vb.
Benim sorum şu: geliştirilecek ne var? Ne eklemem gerektiğini düşünüyorsun?
Kodlamaya başlamadan önce bunun için başka fikirleriniz mi var?