- Nilai kembalian fungsi
Enum.all? untuk list kosong adalah true
- Fungsi
all di Haskell, all di Python, dan every? di Clojure juga bekerja dengan cara yang sama
- Mengembalikan true untuk list kosong memudahkan implementasi
true && f(elem1) && f(elem2) ...
- Tetapi bukan berarti fungsi itu diimplementasikan seperti itu hanya demi kemudahan implementasi
- Perilaku ini diimplementasikan agar sesuai dengan definisi kebenaran hampa (vacuous truth) dalam logika
- Untuk memahami kebenaran hampa, kita perlu melihat implikasi material
- Jika p salah, maka p → q selalu benar
- “Jika Patung Liberty berada di Seoul, maka Menara Eiffel berada di Pohang” adalah benar
- Karena p, yaitu “Patung Liberty berada di Seoul”, adalah salah
- Dalam implikasi material seperti ini, ketika p salah sehingga pernyataan menjadi benar tanpa syarat, itulah yang disebut kebenaran hampa
- Dalam kebenaran hampa, untuk himpunan (set) kosong, pernyataan apa pun menjadi benar
- Ambil contoh 'semua ponsel di dalam ruangan sedang dimatikan'
- x adalah semua benda yang ada di ruangan
- P(x) adalah 'x adalah ponsel'
- Q(x) adalah 'x sedang dimatikan'
- Karena x kosong, maka P(x) salah. Berdasarkan kebenaran hampa, pernyataan itu selalu benar.
- Karena itu, nilai kembalian fungsi
Enum.all? untuk list kosong menjadi true.
3 komentar
Jadi paham sekarang hehe, terima kasih sudah berbagi.
Pendekatan matematis dan ilmu komputer memang seperti ini, tapi saat ngoding rasanya tetap membingungkan jadi sepertinya lebih baik tidak terlalu dipakai wkwk.
Terutama di
if, list kosong dianggapFalsejadi sering bikin bingung.Kalau di Python, hasilnya seperti di bawah ini.
all([]) == Trueall([[]]) == FalseKarena itu, saya cenderung lebih memilih menuliskan kondisi secara eksplisit demi orang yang akan membaca kode.
Daripada
if not arr:, misalnya sepertiif len(arr) == 0:.Contoh lain, alih-alih
if not flag:, mungkinif flag is False:.Menurut standar saya,
all([[]])juga akan lebih mudah dibaca jika ditulis ulang menjadiall([kondisi for ... in []]).Ah~ jadi di Python, karena list kosong termasuk nilai falsy, nilai balik
all([[]])menjadiFalse. Karena nilai truthy dan falsy berbeda di tiap bahasa, saya kadang tetap melakukan kesalahan saat memakai bahasa lain. :)Sebagai referensi, di Elixir hanya
nilataufalseyang termasuk nilai falsy, jadi nilaiEnum.all?([[]])adalahtrue.