Cats adalah perpustakaan yang menyediakan abstraksi untuk pemrograman fungsional dalam bahasa pemrograman Scala.
Scala mendukung pemrograman berorientasi objek dan fungsional, dan ini tercermin dalam pendekatan hybrid perpustakaan standar. Cats berupaya menyediakan abstraksi pemrograman fungsional yang inti, kompatibel dengan biner, modular, mudah didekati, dan efisien. Tujuan Cats yang lebih luas adalah memberikan landasan bagi ekosistem perpustakaan yang murni dan bertipe untuk mendukung pemrograman fungsional dalam aplikasi Scala.
Untuk detail lebih lanjut tentang motivasi Kucing, buka di sini.
Nama ini merupakan kependekan dari kata kategori , dari "teori kategori".
Apapun itu, Anda tidak perlu tahu apa pun tentang teori kategori untuk menggunakan Cats.
Proyek ini ada berkat semua orang yang berkontribusi. Kami menyambut baik kontribusi untuk Cats dan ingin Anda membantu membangun Cats. Lihat panduan kontributor kami untuk informasi lebih lanjut tentang bagaimana Anda dapat terlibat sebagai pengembang. Jika Anda mencari sesuatu untuk memulai, berikut adalah daftar ramah pemula.
Menjadi kontributor keuangan dan membantu kami mempertahankan komunitas kami. Donasi secara langsung mendukung jam kerja pengelola, dokumentasi yang lebih baik, dan inisiatif strategis.
Sponsor Platinum mulai dari $950 USD/bulan.
Sponsor Platinum muncul di sini di https://typelevel.org/cats
Sponsor Emas mulai dari $420 USD/bulan.
Sponsor Emas muncul di sini di https://typelevel.org/cats
Sponsor Perak mulai dari $180 USD/bulan.
Sponsor Perak muncul di sini di https://typelevel.org/cats
Jadilah Pendukung dengan donasi berulang hanya $5 USD/bulan.
Pendukung muncul di sini di https://typelevel.org/cats
Syukurlah kami juga menerima kontribusi satu kali dan berulang.
Kontributor lain muncul di sini di https://typelevel.org/cats
<skrip src="/cats/js/sponsors.js"></skrip>
Cats tersedia untuk Scala.js dan Scala Native, serta runtime JVM standar.
Cats mengandalkan inferensi tipe yang ditingkatkan melalui perbaikan untuk SI-2712, yang tidak diaktifkan secara default. Untuk Scala 2.12 Anda harus menambahkan yang berikut ini ke build.sbt
Anda:
scalacOptions += "-penyatuan sebagian"
(Penyatuan sebagian diaktifkan secara default sejak Scala 2.13, kompiler tidak lagi menerima -Ypartial-unification
)
Dan kemudian buat ketergantungan Cats, dengan menambahkan yang berikut ini ke build.sbt
Anda:
LibraryDependencies += "org.typelevel" %% "cats-core" % "2.9.0"
Ini akan menarik modul cat-core. Jika Anda memerlukan beberapa fungsi lain, Anda dapat memilih di antara modul-modul ini (digunakan sebagai pengganti "cats-core"
):
cats-kernel
: Kumpulan kecil kelas tipe dasar ( wajib ).
cats-core
: Sebagian besar kelas dan fungsionalitas tipe inti ( wajib ).
cats-laws
: Hukum untuk menguji instance kelas tipe.
cats-free
: Struktur gratis seperti monad gratis, dan kelas tipe pendukung.
cats-testkit
: lib untuk menulis tes untuk instance kelas tipe menggunakan hukum.
algebra
: Ketik kelas untuk mewakili struktur aljabar.
alleycats-core
: Contoh dan kelas kucing yang tidak sah.
Ada beberapa modul Cats lain yang berada dalam repo terpisah sehingga dapat mempertahankan siklus rilis independen.
cats-effect
: tipe IO
standar bersama dengan kelas tipe Sync
, Async
dan Effect
cats-mtl
: kelas tipe transformator untuk Monad, Aplikatif, dan Fungsi Kucing.
mouse
: pendamping kecil untuk Kucing yang menyediakan sintaksis yang mudah digunakan (alias metode ekstensi)
kittens
: derivasi instance kelas tipe otomatis untuk Kucing dan fungsi utilitas umum
cats-tagless
: Utilitas untuk aljabar akhir yang disandikan tanpa tag
cats-collections
: Struktur data yang memfasilitasi pemrograman fungsional murni
cats-testkit-scalatest
: Integrasi testkit kucing dengan Scalatest
Catatan rilis sebelumnya untuk Cats tersedia di CHANGES.md.
Tautan:
Situs web: typelevel.org/cats/
ScalaDoc: typelevel.org/cats/api/
Ketik kelas: typelevel.org/cats/typeclasses.html
Tipe data: typelevel.org/cats/datatypes.html
Ikhtisar aljabar: typelevel.org/cats/algebra.html
Glosarium: typelevel.org/cats/nomenclature.html
Sumber Daya untuk Pelajar: typelevel.org/cats/resources_for_learners.html
Pertanyaan Umum: typelevel.org/cats/faq.html
Ekosistem Typelevel: typelevel.org/cats/typelevelEcosystem.html
Diskusi seputar Kucing saat ini sedang berlangsung pada masalah GitHub, halaman PR, dan Discord:
Typelevel Discord memiliki saluran #cats dan #cats-dev, serta saluran komunitas seperti #beginners. Silakan bergabung dengan kami!
Orang-orang diharapkan mengikuti Kode Etik Scala saat berdiskusi tentang Kucing di GitHub, Discord, atau tempat lainnya.
Kami berharap komunitas kami akan saling menghormati, membantu, dan baik hati. Jika Anda mendapati diri Anda terlibat dalam situasi yang memanas, atau tidak memenuhi harapan kami, Anda harus melepaskan diri dan menghubungi salah satu pengelola proyek secara pribadi. Kami berharap tidak membiarkan agresi kecil dan kesalahpahaman berkembang menjadi masalah yang lebih besar.
Jika Anda dilecehkan, harap segera menghubungi salah satu dari kami agar kami dapat mendukung Anda.
Setelah rilis 1.0.0
, kami memutuskan untuk menggunakan MAJOR.MINOR.PATCH Semantic Versioning 2.0.0 ke depannya, yang berbeda dari skema EPOCH.MAJOR.MINOR yang umum di antara perpustakaan Java dan Scala (termasuk bahasa Scala).
Cats berupaya memberikan landasan yang kokoh dan stabil bagi ekosistem perpustakaan KB. Oleh karena itu, kami memperlakukan pemeliharaan kompatibilitas biner mundur dengan prioritas tinggi. Dalam pembuatan versi semantik, perubahan mundur HANYA diperbolehkan di antara versi UTAMA . Kami akan menjaga kompatibilitas biner antara versi PATCH DAN MINOR . Misalnya, saat kami merilis Cats 1.1.0
, biner tersebut akan kompatibel dengan versi 1.0.x
sebelumnya. Yaitu JAR baru akan menjadi pengganti yang lama. Hal ini penting ketika aplikasi Anda memiliki ketergantungan berlian pada Cats - bergantung pada dua atau lebih perpustakaan yang semuanya bergantung pada Cats. Jika salah satu perpustakaan ditingkatkan ke Cats 1.1.0
baru sebelum perpustakaan lainnya ditingkatkan, aplikasi Anda masih berjalan berkat kompatibilitas biner ke belakang ini.
Yang juga perlu diperhatikan adalah menurut pembuatan versi semantik, versi MINOR Y (xYz | x > 0) HARUS bertambah jika fungsionalitas baru yang kompatibel diperkenalkan ke API publik. Ini HARUS bertambah jika ada fungsi API publik yang ditandai sebagai tidak digunakan lagi.
Perubahan apa pun yang dapat merusak biner memerlukan perubahan versi UTAMA , yang akan sangat kami waspadai. Kami juga akan mempertimbangkan penggunaan nama organization
dan paket untuk versi utama di masa mendatang. Namun keputusan itu belum diambil.
Daftar (tidak lengkap) perusahaan yang menggunakan Cats dalam produksi ditampilkan di ADOPTERS.md. Tidak melihat milikmu? Anda dapat menambahkannya di PR! Dan jika Anda bisa, pertimbangkan untuk mendukung kami.
Pengelola saat ini (orang yang dapat menggabungkan permintaan tarik) adalah:
pembuat rossabaker Ross Baker
armanbilge Arman Bilge
johnynek P.Oscar Boykin
adelbertc Adelbert Chang
danicheg Daniel Esik
LukaJCB Luka Jacobowitz
peterneyens Peter Neyens
kucing kutub Rob Norris
bukan Erik Osheim
barambani Filippo Mariotti
mpilquist Michael Pilquist
milsabin Miles Sabin
djspiewak Daniel Spiewak
Thomas Frank Thomas
satorg Sergey Torgashov
julien-truffaut Julien Truffaut
kailuowang Kailuo Wang
Pensiunan pelaku meliputi:
ceedub Cody Allen
traviscoklat Travis Brown
Saat ini kami mengikuti praktik yang mewajibkan setidaknya dua penandatanganan untuk menggabungkan kode PR (dan untuk masalah besar atau kontroversial, kami mungkin menunggu lebih lanjut). Untuk kesalahan ketik, perbaikan dokumentasi, atau perbaikan kecil pada build, kami menyederhanakannya menjadi satu persetujuan saja. Lebih detail dalam dokumen proses.
Semua kode tersedia untuk Anda di bawah lisensi MIT, tersedia di http://opensource.org/licenses/mit-license.php dan juga di file COPYING. Desainnya diinformasikan oleh banyak proyek lain, khususnya Scalaz.
Hak Cipta pengelola, 2015-2024.