Bir programın evrenini küçük bir laboratuvar gibi düşünün. Masanın üzerinde girdiler var: sayılar, metinler, listeler, belki biraz kullanıcı verisi. İşlevsel programlama bu laboratuvara beyaz önlükle girer ve şöyle der: Bana ne verdiysen, ona karşılık ne üreteceğimi söyleyeyim; ama deney tüplerini gizlice değiştirmem, rafları karıştırmam, geçmişi yeniden yazmam, geleceğe mayın döşemem. Kulağa ahlaki bir manifesto gibi geliyor, fakat aslında son derece pratik bir mühendislik tavrıdır.
İşlevsel programlamanın merkezinde saf fonksiyon fikri durur. Saf fonksiyon, aynı girdiye her zaman aynı çıktıyı verir ve bunu yaparken dış dünyada hiçbir şeyi değiştirmez. Matematikteki f(x) gibi: f(2) her çağrıldığında başka bir ruh hâline bürünüp bazen 4, bazen 7, bazen de veritabanındaki kullanıcıları silmez. Bu sadelik, kodun tahmin edilebilir olmasını sağlar. Tahmin edilebilir kod ise gecenin üçünde kahveyle hata ayıklayan geliştiricinin sinir sistemine yapılmış bir iyiliktir.