Semua tipe penyimpanan melibatkan penyimpanan sesuatu pada satu titik dan mengambilnya nanti. Untuk melakukan ini hanya dalam satu operasi, Anda harus melakukan penyimpanan atau pengambilan secara otomatis, dan tentukan posisi nilai yang disimpan dalam operasi lainnya.
Yaitu, untuk penyimpanan eksplisit, Anda dapat membuat operator untuk mengambil nilai yang dihitung sebelum operasi ini, atau mengembalikan nilai saat ini setelah operasi. Atau, Anda dapat menggunakan posisi absolut dari awal program, atau melakukan lebih banyak hal seperti menghapus beberapa elemen secara otomatis setelah beberapa operasi (seperti dalam tumpukan). Anda juga dapat membuat beberapa operator, mengambil dari berbagai salinan penyimpanan dengan atau tanpa operasi otomatis ini. Dan Anda harus mencoba membuat jumlah maksimum yang diperlukan untuk menentukan dalam operasi yang cukup kecil, sehingga Anda dapat menetapkan satu operator untuk setiap nomor.
Tetapi dalam kebanyakan kasus, Anda bahkan tidak memerlukan operator dan bahasa akan melakukan ini secara implisit. Saat itulah Anda perlu mempertimbangkan model yang lebih standar seperti tumpukan atau antrian. Yang paling sukses untuk saat ini tampaknya adalah pemrograman diam-diam, yang bahkan tidak menyebutkan penyimpanan secara langsung.
Jika Anda ingin mendesain model seperti itu, Anda dapat mencoba memperluas evaluasi sebagai barang, dan cobalah memikirkan barang bawaan jika tidak ada yang ditentukan. Kemungkinan besar, defaultnya hanya sebuah pohon, kecuali untuk beberapa daun yang dapat dihubungkan ke input yang sama. Misalnya Anda dapat menggunakan antrian untuk pohon seimbang, atau tumpukan untuk pohon yang dalam di mana daun sebagian besar konstan, atau sesuatu seperti Jelly untuk pohon yang dalam di mana daun sebagian besar merupakan salinan dari input.
Tetapi perhatikan bahwa, Anda bisa menyandikan bentuk pohon biner hanya dalam 2 bit per operator. Jadi, jika bahasa Anda memiliki kurang dari 64 operator, Anda mungkin benar-benar mengabaikan model tradisional dan hanya meng-encode pohon lengkap dalam bit cadangan (sebut saja flag kombinasi_pihak dan di bawah_bawah). Bahkan jika ada lebih banyak operator, Anda bisa membuat default yang cukup bagus (seperti model Jelly) dan 3 pengubah untuk mengubahnya.
Anda dapat menggunakan model yang sama untuk penyimpanan implisit dan eksplisit untuk kenyamanan, tetapi Anda tidak harus melakukannya. Misalnya, Anda bisa menggunakan tumpukan untuk penyimpanan implisit, tetapi jangan muncul elemen dalam penyimpanan eksplisit (atau penyimpanan eksplisit lain selain yang implisit). Kemungkinan itu tidak akan disebut tumpukan di dokumentasi akhir, tetapi Anda mendapatkan idenya.
Untuk referensi, ukuran pengkodean sempurna dari pohon biner adalah logaritma angka Catalan . Dan ukuran penyandian sempurna dari "binary" dag adalah logaritma A082161 , tetapi jelas tidak praktis. Ini mengasumsikan operator dengan argumen berbeda memesan dua operator yang berbeda, menambahkan bit lain ketika tidak.
Kadang-kadang Anda mungkin masih menginginkan variabel untuk loop. Dimungkinkan untuk menulis ulang loop dengan cara lain. Tetapi jika Anda benar-benar membutuhkannya, jangan gunakan konstruk 1-byte selain nama untuk mendefinisikan variabel. kecuali Anda hanya menggunakan nilai yang diinisialisasi, biasanya lebih efisien menggunakan flag 1-bit untuk menentukan apakah Anda membaca atau menulis variabel ini.