Tüm depolama türleri, bir noktada bir şeyin depolanmasını ve daha sonra alınmasını içerir. Bunu yalnızca bir işlemde yapmak için, otomatik olarak depolama veya alma işlemini gerçekleştirmeli ve diğer işlemde saklanan değerin konumunu belirtmelisiniz.
Yani, açık depolama için, bu işlemden önce n. Hesaplanan değeri almak için bir operatör oluşturabilir veya n işleminden sonra geçerli değeri geri koyabilirsiniz. Alternatif olarak, programın başlangıcından itibaren mutlak konumu kullanabilir veya bazı işlemlerden sonra (yığın gibi) bazı öğeleri otomatik olarak kaldırma gibi daha fazla şey yapabilirsiniz. Ayrıca, bu otomatik işlemlerle veya bu otomatik işlemlerle depolama alanının farklı kopyalarını alarak birden çok operatör de yapabilirsiniz. İşlemlerde belirtmek için gereken maksimum sayıyı oldukça küçük yapmaya çalışmalısınız, böylece her sayı için bir operatör atayabilirsiniz.
Ancak çoğu durumda, bir operatöre bile ihtiyacınız yoktur ve dil bunu örtük olarak yapar. Bu, yığınlar veya kuyruklar gibi daha standart bir modeli düşünmeniz gerektiği zamandır. Şimdilik en başarılı, doğrudan depolamadan bile bahsetmeyen zımni programlama gibi görünüyordu.
Böyle yeni bir model tasarlamak istiyorsanız, değerlendirmeleri bir dag olarak genişletmeyi deneyebilir ve başka bir şey belirtilmezse varsayılan bir dag düşünmeyi deneyebilirsiniz. Büyük olasılıkla, varsayılan değer yalnızca bir ağaçtır, ancak aynı girişe birden fazla yaprak bağlanabilir. Örneğin, dengeli bir ağaç için bir kuyruk veya yaprakların çoğunlukla sabit olduğu derin bir ağaç için bir yığın veya yaprakların daha çok girdinin kopyaları olduğu derin bir ağaç için Jelly gibi bir şey kullanabilirsiniz.
Ancak, bir ikili ağacın şeklini operatör başına sadece 2 bit olarak kodlayabileceğinizi unutmayın. Dolayısıyla, dilinizde 64'ten az operatör varsa, geleneksel modelleri görmezden gelebilir ve sadece tüm ağacı yedek bitlerde kodlayabilirsiniz (bunlara combine_parent ve below_leaf bayrakları deyin). Daha fazla operatör olsa bile, oldukça iyi bir varsayılan (Jelly modeli gibi) ve değiştirmek için 3 değiştirici yapabilirsiniz.
Kolaylık sağlamak amacıyla örtülü ve açık depolama için aynı modeli kullanabilirsiniz, ancak zorunlu değildir. Örneğin, örtülü depolama için bir yığın kullanabilirsiniz, ancak açık depolamadaki (veya örtük olana ek olarak başka bir açık depolamadaki) öğeleri açmayın. Muhtemelen nihai belgelerde yığın olarak adlandırılmayacaktır, ancak fikri anlarsınız.
Referans için, bir ikili ağacın mükemmel kodlamasının boyutu Katalan sayılarının logaritmasıdır . Ve "ikili" bir dag'ın mükemmel kodlamasının boyutu, A082161'in logaritmasıdır , ancak açıkça pratik değildir. Bu, farklı bağımsız değişkene sahip bir operatörün iki farklı operatöre sahip olduğunu varsayar;
Bazen döngüler için değişkenler isteyebilirsiniz. Döngüleri başka şekillerde yeniden yazmak mümkün olabilir. Ancak gerçekten ihtiyacınız varsa, değişkeni tanımlamak için bir ada ek olarak 1 baytlık bir yapı kullanmayın. yalnızca önceden başlatılmış değerleri kullanmıyorsanız, bu değişkeni okuyup yazmadığınızı veya yazıp yazmadığınızı belirtmek için genellikle 1-bit bayrak kullanmak daha etkilidir.