Gunakan perpustakaan G saya
https://github.com/luser-dr00g/G
Ini file teks. Tanpa ekstensi, untuk sintaks yang sesingkat mungkin untuk memuatnya.
Itu memungkinkan program 203-char Sierpinksi Triangle ini
[48(0-1+0+1-0)49(11)43(+)45(-)/s{dup
0 eq{exch{[48{1 0 rlineto}49 1 index
43{240 rotate}45{120 rotate}>>exch
get exec}forall}{exch{load
exch 1 sub s}forall}ifelse 1 add}>>begin
9 9 moveto(0-1-1)9 s fill
untuk ditulis ulang dalam 151 byte sebagai
3(G)run $
{A - B + A + B - A}
{B B}
{A - B - B}7{[ex{du w{(>K?\2u)$}if}fora]}rep
cvx[/A{3 0 rl}/B 1 in/-{120 rot}/+{-120 rot}>>b
100 200(k?B9)$ showp
workfile dengan komentar
Menggunakan fitur nama sistem yang disingkat, 1(G)run sepenuhnya menghilangkan beban nama operator yang panjang. Nama operator hanya perlu cukup panjang untuk membedakannya dari yang lain.
Begitu
add menjadi ad
mul menjadi mu
index menjadi i
- dll, dll.
Menggunakan PLRM Apendiks F untuk tabel standar nama operator.
Dan fitur Operator Strings tersedia bahkan jika nama yang disingkat tidak dipilih. Pustaka kosong memiliki "level dasar" yang dipilih dengan menambahkan secara sederhana(G)run tanpa dekorasi lebih lanjut.
Level dasar mencakup fungsi baru . yang menerima kode integer untuk operator (Lampiran F yang sama yang disebutkan di atas) dan menjalankannya.
Fungsi baru ini $dijalankan melalui sebuah string dan panggilan. masing-masing. Jadi kode ascii langsung memilih operator dengan nomor.
Fungsi baru @ memungkinkan Anda menjangkau ke bawah tabel di Lampiran F dengan memperlakukan karakter spasi (Ascii 0x20) sebagai 0.
Fungsi baru #memungkinkan Anda menjangkau lebih jauh ke dalam tabel dengan terlebih dahulu menambahkan 95 (0x5F) sehingga spasi 0x20 diperlakukan sebagai 127 (0x7F), kode berikutnya setelah karakter ascii terakhir yang dapat dicetak.~ 126 (0x7E).
Dua fungsi baru !memungkinkan Anda mengakses struktur array dan / atau dict yang bersarang dengan array indeks indeks / kunci, daripada ekspresi yang membosankan dari banyak get(dan put) operator.
(G)run 7 karakter membeli level dasar.
1(G)run 8 karakter membeli dan nama sistem disingkat.
3(G)run $9 karakter segera memulai prosedur implisit blok sumber pemindaian baris sampai baris kosong berikutnya, dan mendefinisikan baris pertama sebagai prosedur yang disebut A, baris berikutnya didefinisikan sebagai prosedur yang disebut B, dll. Ini harus menghapus sebagian besar yang defdiperlukan untuk mendefinisikan banyak hal, tanpa perlu membungkusnya dalam kamus, atau bahkan secara eksplisit memberi mereka nama.