Saya mulai belajar Haskell . Saya sangat baru dalam hal ini, dan saya hanya membaca beberapa buku online untuk memahami konstruksi dasarnya.
Salah satu 'meme' yang sering dibicarakan orang-orang, adalah keseluruhan "jika dikompilasi, itu akan berfungsi *" - yang saya pikir terkait dengan kekuatan sistem tipe.
Saya mencoba untuk memahami mengapa persis Haskell lebih baik dari lainnya bahasa statis diketik dalam hal ini.
Dengan kata lain, saya berasumsi di Jawa, Anda bisa melakukan sesuatu yang keji seperti mengubur
ArrayList<String>()
untuk mengandung sesuatu yang seharusnya ArrayList<Animal>()
. Hal keji di sini adalah adalah bahwa Anda string
mengandung elephant, giraffe
, dll, dan jika seseorang menempatkan di Mercedes
- compiler Anda tidak akan membantu Anda.
Jika saya melakukan lakukan ArrayList<Animal>()
kemudian, di beberapa titik kemudian dalam waktu, jika saya memutuskan program saya tidak benar-benar tentang hewan, ini tentang kendaraan, maka saya dapat mengubah, katakanlah, sebuah fungsi yang menghasilkan ArrayList<Animal>
untuk menghasilkan ArrayList<Vehicle>
dan IDE saya harus memberitahu saya di mana-mana ada adalah istirahat kompilasi.
Asumsi saya adalah bahwa inilah yang orang maksud dengan sistem tipe yang kuat , tetapi tidak jelas bagi saya mengapa Haskell lebih baik. Dengan kata lain, Anda dapat menulis Java yang baik atau buruk, saya berasumsi Anda dapat melakukan hal yang sama di Haskell (yaitu memasukkan hal-hal ke dalam string / int yang seharusnya benar-benar tipe data kelas satu).
Saya curiga saya kehilangan sesuatu yang penting / mendasar.
Saya akan sangat senang ditunjukkan kesalahan cara saya!
Maybe
hanya menyebutkan menjelang akhir. Jika saya harus memilih satu hal yang sebaiknya dipinjam dari bahasa populer dari Haskell, ini dia. Itu ide yang sangat sederhana (jadi tidak terlalu menarik dari sudut pandang teoritis), tetapi ini saja akan membuat pekerjaan kita jauh lebih mudah.