- Boş bir liste için
Enum.all? fonksiyonunun dönüş değeri true
- Haskell'deki
all, Python'daki all, Clojure'daki every? fonksiyonları da aynı şekilde çalışır
- Boş bir liste için
true döndürmek uygulamayı kolaylaştırır
true && f(elem1) && f(elem2) ...
- Ancak bunun böyle uygulanmasının nedeni uygulama kolaylığı değildir
- Mantıktaki vacuous truth tanımına uygun olacak şekilde uygulanmıştır
- Vacuous truth'ü anlamak için maddi koşullu önermeye bakmak gerekir
- p yanlışsa p → q her zaman doğrudur
- “Özgürlük Heykeli Seul'deyse Eyfel Kulesi de Pohang'dadır” ifadesi doğrudur
- Çünkü p olan “Özgürlük Heykeli Seul'dedir” ifadesi yanlıştır
- Böyle maddi koşullu önermelerde p yanlış olduğu için ifadenin koşulsuz doğru olmasına vacuous truth denir
- Vacuous truth'te boş küme (set) için her önerme doğru kabul edilir
- Örnek olarak 'odadaki tüm cep telefonları kapalıdır' ifadesini ele alalım
- x odadaki tüm şeylerdir
- P(x), 'x bir cep telefonudur'
- Q(x), 'x kapalıdır'
- x boş olduğu için P(x) yanlıştır. Vacuous truth nedeniyle ifade her zaman doğru olur.
- Bu yüzden boş bir liste için
Enum.all? fonksiyonunun dönüş değeri true olur.
3 yorum
Öğrenmiş oldum haha, paylaştığınız için teşekkürler.
Matematiksel ve bilgisayar bilimi açısından yaklaşım böyle olsa da, kod yazarken kafa karıştırdığı için kullanmamak daha iyi gibi görünüyor haha.
Özellikle
ififadelerinde boş listeFalseolarak algılandığı için çok karışıyor.Python açısından aşağıdaki gibidir.
all([]) == Trueall([[]]) == FalseBu yüzden, kodu okuyacak kişi için koşulları açıkça yazmayı tercih ediyorum.
if not arr:yerineif len(arr) == 0:gibi.if not flag:yerineif flag is False:gibi bir örnek de verilebilir.Benim ölçütüme göre
all([[]])yerine bunuall([koşul ifadesi for ... in []])olarak yeniden yazmak, kodun daha okunaklı olmasını sağlar.Ah~ demek ki Python'da boş liste
falsybir değer olduğu içinall([[]])dönüş değeriFalseoluyormuş. Diller arasındaTruthy,Falsydeğerler farklı olduğu için başka bir dil kullanırken ara sıra hata yapıyorum. :)Bu arada Elixir'de yalnızca
nilveyafalseFalsydeğerler olduğu içinEnum.all?([[]])değeritrueçıkıyor.