Introduction
Last updated
Last updated
Sumber asli buku ini tersedia dalam bahasa Inggris: Mostly adequate guide to FP (in javascript)
Ini adalah buku tentang paradigma fungsional secara umum.
Kami akan menggunakan bahasa pemrograman fungsional terpopuler di dunia: JavaScript.
Beberapa diantaranya mungkin merasa ini adalah pilihan yang buruk karena bertentangan dengan selera budaya saat ini, saat ini, terasa begitu penting.
Namun, saya percaya ini adalah cara terbaik untuk belajar FP karena beberapa alasan berikut:
Anda mungkin menggunakannya setiap hari di tempat kerja.
Hal ini memungkinkan untuk berlatih dan menerapkan pengetahuan yang Anda peroleh setiap hari pada program dunia nyata daripada proyek hewan peliharaan pada malam hari dan akhir pekan dalam bahasa FP esoteris.
Kita tidak harus mempelajari semuanya terlebih dahulu untuk mulai menulis program.
Dalam bahasa fungsional murni, Anda tidak dapat mencatat variabel atau membaca simpul DOM tanpa menggunakan monads.
Di sini kita bisa sedikit curang saat kita belajar memurnikan basis kode kita.
Juga lebih mudah untuk memulai dalam bahasa ini karena ini adalah paradigma campuran dan Anda dapat kembali ke praktik Anda saat ini sementara ada kesenjangan dalam pengetahuan Anda.
Bahasa ini sepenuhnya mampu menulis kode fungsional kedudukan tertinggi.
Kami memiliki semua fitur yang kami butuhkan untuk meniru bahasa seperti Scala atau Haskell dengan bantuan satu atau dua perpustakaan kecil.
Pemrograman berorientasi objek saat ini mendominasi industri, tetapi jelas canggung dalam JavaScript.
Ini mirip dengan berkemah di jalan raya atau menari tap di sepatu karet.
Kami harus melakukan bind
ke mana-mana agar this
tidak berubah dari bawah kami, kami memiliki berbagai solusi untuk perilaku unik ketika kata kunci new
dilupakan, private members (anggota pribadi) hanya tersedia melalui closures (penutupan). Bagi banyak dari kita, FP terasa lebih alami.
Yang mengatakan, bahasa fungsional yang diketik (typed) akan, tanpa diragukan lagi, menjadi tempat terbaik untuk membuat kode dalam gaya yang disajikan oleh buku ini.
JavaScript akan menjadi sarana kami untuk mempelajari suatu paradigma, di mana Anda menerapkannya terserah Anda. Untungnya, antarmukanya matematis dan dengan demikian ada di mana-mana.
Anda akan merasa betah dengan Swiftz, Scalaz, Haskell, PureScript, dan lingkungan yang cenderung matematis lainnya.
Untuk pengalaman membaca yang lebih baik, baca secara online melalui Gitbook.
Bilah samping akses cepat
Latihan dalam browser
Contoh mendalam
Untuk membuat pelatihan menjadi efisien dan tidak terlalu bosan saat saya menceritakan kisah lain, pastikan untuk bermain-main dengan konsep yang diperkenalkan dalam buku ini.
Beberapa mungkin sulit ditangkap pada awalnya dan lebih mudah dipahami dengan mengotori tangan Anda. Semua fungsi dan struktur data aljabar yang disajikan dalam buku ini dikumpulkan dalam lampiran.
Kode yang sesuai juga tersedia sebagai modul npm:
Atau, latihan setiap bab dapat dijalankan dan diselesaikan di editor Anda! Misalnya, selesaikan exercise_*.js
di exercises/ch04
lalu jalankan:
Temukan PDF dan EPUB yang telah dibuat sebelumnya sebagai build artifacts versi terbaru.
atau, buat sendiri.
⚠️ ️Penyiapan proyek ini sekarang agak lama dan karenanya, Anda mungkin mengalami berbagai masalah saat membangun ini secara lokal. Kami menyarankan untuk menggunakan node v10.22.1 dan Calibre versi terbaru jika memungkinkan.
Catatan! Untuk menghasilkan versi ebook, Anda harus menginstal
ebook-convert
. Petunjuk pemasangan.
Lihat SUMMARY-id.md
Lihat CONTRIBUTING-id.md
Lihat TRANSLATIONS.md
Lihat FAQ.md
Bagian 1 (Bab 1-7) adalah panduan untuk dasar-dasarnya. Saya memperbarui karena saya menemukan kesalahan karena ini adalah draf awal. Jangan ragu untuk membantu!
Bagian 2 (bab 8-13) membahas kelas tipe seperti functor dan monad hingga traversable. Saya berharap untuk memeras transformer dan aplikasi murni.
Bagian 3 (bab 14+) akan mulai menarik garis tipis antara pemrograman praktis dan absurditas akademis. Kita akan melihat comonads, f-algebras, free monads, yoneda, dan konstruksi kategorikal lainnya.
Karya ini dilisensikan di bawah Creative Commons Attribution-ShareAlike 4.0 International License.