Bunu python ile yapıyorum. Bunun için tasarlanmamış bir dilde kalıtsal olarak saf bir işlevsel tarzda yazmanın hantal olduğunu düşünüyorum. Örneğin, in_order'ın iki tanımını karşılaştırın :
def in_order(xs):
for i in range(1,len(xs)):
if xs[i] > xs[i+1]:
return False
return True
inOrder :: (Ord a) => [a] -> Bool
inOrder xs = and $ zipWith (<=) xs (tail xs)
in_order
Haskell yolunu python'a yazmak hem ayrıntılı (python gerekli deyimleri çok iyi desteklemediğinden) hem de yavaş olacaktır (Haskell'in tembellik nedeniyle sabit alanı yerine doğrusal boşluk).
Ancak, işlevsel organizasyon ve her fonksiyonun deyimsel uygulaması ile python programları oluşturmada başarılı oldum . Bunun programlamanın iyi bir yolu olduğu fikri aslında codecatalog projemin arkasındaki tez . Yani, bileşenlerim, devletli sınıflardan ziyade, üzerlerinde çalışan soyutlamalar ve işlevler (saf arayüz ile ) etrafında odaklanmış ve güzel bir şekilde bir araya geliyor. Aslında, bu şekilde organize edilen kodun yeniden kullanımı sınıflarla organize edilen koddan daha esnek gibi görünmektedir. Bununla birlikte, bu hala kişisel bir önyargı olabilir, çünkü ben hala bir Haskell adananıyım.
Bu yüzden sorunuzun cevabının biraz olduğunu söyleyebilirim . Düşünmenize yardımcı olması için fonksiyonel köklerinizi kullanın, ancak aşırıya kaçmayın. Örneğin. Ruby'de tembel listelerin simüle edilmesi sadece deyim uğruna muhtemelen değerinden daha fazla sorun olacaktır.