Fonksiyonel tarzda, değerlerin bir programdan akışı çok, çok görünür (hem derleyici hem de programcı için). Bu, derleyiciye değerleri nerede saklayacağına, ne kadar süre saklayacağına vb. Karar vermek için çok fazla boşluk sağlar.
Zorunlu bir dilde, derleyici programcıya çoğu değişkenin bellekteki belirli bir yaşam süresi boyunca kalan gerçek konumlara karşılık geldiği bir model vaat eder. Potansiyel olarak, herhangi bir ifade bu konumların herhangi birinden okuyabilir (veya bunlara yazabilir!), Bu nedenle derleyici bellek konumlarını yalnızca kayıt tahsisi ile değiştirebilir, iki değişkeni tek bir depolama konumuna birleştirebilir veya nerede özenli bir analiz yaptıktan sonra benzer optimizasyonlar gerçekleştirebilir başka programda bu değişkene başvurulabilir.
Şimdi iki uyarı var:
- Programlama dili topluluğu, son elli yıl boyunca bu analizi yapmak için akıllı yollar geliştirmek için çok çaba harcadı (boşa harcadı?) . Kayıt renklendirme gibi bilinen hileler vardır ve çoğu zaman daha kolay vakalardan bazılarını elde etmek için; ancak bu, büyük, yavaş derleyiciler ve sonuçta ortaya çıkan kodun kalitesi için sürekli bir derleme karmaşıklığı dengesi sağlar
- Aynı zamanda, çoğu işlevsel programlama dili de tamamen işlevsel değildir; G / Ç'ye yanıt vermek gibi programların gerçekten yapması gereken pek çok şey doğal olarak işlevsel değildir, bu nedenle hiçbir derleyici bu hilelerden tamamen özgür olamaz ve hiçbir dil onlardan tamamen kaçınmaz - hatta biraz da Haskell bile benim zevkime göre saf (Kilometre Değişebilir) kodunuzun yalnızca işlevsel olmayan kısımlarını kontrol edebilir ve duvardan çıkarabilir, onlardan tamamen kaçınamazsınız.
Ancak genel soruyu cevaplamak için, evet, fonksiyonel bir paradigma derleyiciye zorunlu bir ortamda olmadığını optimize etmek için çok fazla özgürlük verir.