Ünlü SICP'yi okurken, yazarların 3. bölümdeki atama ifadesini Scheme'ye sunmakta isteksiz olduklarını gördüm. Metinleri ve neden böyle hissettiklerini anlıyorum.
Scheme, hakkında bir şey bildiğim ilk fonksiyonel programlama dili olduğundan, bazı işlevsel programlama dillerinin (elbette Scheme değil) atamalar olmadan yapabileceği konusunda şaşırdım.
Kitabın sunduğu örneği, örnek olarak kullanalım bank account
. Ödev ifadesi yoksa, bu nasıl yapılabilir? balance
Değişkeni nasıl değiştirebilirim ? Öyle soruyorum çünkü orada saf denilen bazı işlevsel diller olduğunu biliyorum ve Turing'in tam teorisine göre, bu da yapılabilir.
C, Java, Python öğrendim ve yazdığım her programda ödevleri çok kullandım. Bu yüzden gerçekten göz açıcı bir deneyim. Umarım birileri bu işlevsel programlama dillerinde görevlendirmelerden nasıl kaçınıldığını ve bu diller üzerinde (varsa) ne kadar etkili olduğunu kısaca açıklayabilir.
Yukarıda belirtilen örnek burada:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
Bu balance
tarafından değiştirildi set!
. Bana göre sınıf üyesini değiştirmek için sınıf yöntemine çok benziyor balance
.
Dediğim gibi, işlevsel programlama dillerine aşina değilim, bu yüzden onlar hakkında yanlış bir şey söylersem, söylemekten çekinmeyin.
set!
veya a ile biten diğer işlevleri kullanmadan bir sürü program programı yazmak olacaktır!
. Bundan memnun olduğunuzda, saf FP'ye geçiş daha kolay olmalıdır.