Cats هي مكتبة توفر تجريدات للبرمجة الوظيفية في لغة برمجة Scala.
يدعم Scala كلا من البرمجة الموجهة للكائنات والبرمجة الوظيفية، وينعكس هذا في النهج المختلط للمكتبة القياسية. تسعى Cats جاهدة إلى توفير تجريدات برمجة وظيفية تكون أساسية ومتوافقة مع الثنائيات ووحدات نمطية وودودة وفعالة. الهدف الأوسع لـ Cats هو توفير أساس لنظام بيئي من المكتبات النقية والنوعية لدعم البرمجة الوظيفية في تطبيقات Scala.
لمزيد من التفاصيل حول دوافع القطط، اذهب هنا.
الاسم عبارة عن اختصار مرح لكلمة فئة ، من "نظرية الفئة".
بغض النظر، لا تحتاج إلى معرفة أي شيء عن نظرية الفئة لاستخدام القطط.
هذا المشروع موجود بفضل جميع الأشخاص الذين ساهموا فيه. نحن نرحب بالمساهمات في القطط ونود أن تساعد في بناء القطط. راجع دليل المساهمين الخاص بنا للحصول على مزيد من المعلومات حول كيفية المشاركة كمطور. إذا كنت تبحث عن شيء لتبدأ به، فإليك قائمة مناسبة للمبتدئين.
كن مساهمًا ماليًا وساعدنا في الحفاظ على مجتمعنا. تدعم التبرعات بشكل مباشر ساعات العمل للمشرفين، وتحسين التوثيق والمبادرات الإستراتيجية.
تبدأ الرعاية البلاتينية بسعر 950 دولارًا أمريكيًا شهريًا.
يظهر الرعاة البلاتينيون هنا على https://typelevel.org/cats
تبدأ الرعاية الذهبية بسعر 420 دولارًا أمريكيًا شهريًا.
يظهر الرعاة الذهبيون هنا على https://typelevel.org/cats
تبدأ الرعاية الفضية بسعر 180 دولارًا أمريكيًا شهريًا.
يظهر الرعاة الفضيون هنا على https://typelevel.org/cats
كن داعمًا من خلال تبرع متكرر بقيمة 5 دولارات أمريكية شهريًا فقط.
يظهر الداعمون هنا على https://typelevel.org/cats
ولحسن الحظ أننا نقبل المساهمات لمرة واحدة والمتكررة أيضًا.
يظهر المساهمون الآخرون هنا على https://typelevel.org/cats
<script src="/cats/js/sponsors.js"></script>
يتوفر Cats لـ Scala.js وScala Native، بالإضافة إلى وقت تشغيل JVM القياسي.
تعتمد Cats على استدلال النوع المحسّن من خلال إصلاح SI-2712، والذي لا يتم تمكينه افتراضيًا. بالنسبة إلى Scala 2.12، يجب عليك إضافة ما يلي إلى build.sbt
الخاص بك:
scalacOptions += "-Ypartial-unification"
(التوحيد الجزئي قيد التشغيل افتراضيًا منذ Scala 2.13، ولم يعد المترجم يقبل -Ypartial-unification
)
ثم قم بإنشاء تبعية Cats، وذلك بإضافة ما يلي إلى build.sbt
الخاص بك:
LibraryDependeency += "org.typelevel" %% "cats-core" % "2.9.0"
سيؤدي هذا إلى سحب الوحدة الأساسية للقطط. إذا كنت بحاجة إلى بعض الوظائف الأخرى، يمكنك الاختيار من بين هذه الوحدات (المستخدمة بدلاً من "cats-core"
):
cats-kernel
: مجموعة صغيرة من فئات النوع الأساسي ( مطلوب ).
cats-core
: معظم فئات الأنواع الأساسية ووظائفها ( مطلوبة ).
cats-laws
: قوانين لاختبار مثيلات فئة النوع.
cats-free
: الهياكل الحرة مثل الموناد الحرة وفئات الكتابة الداعمة.
cats-testkit
: lib لكتابة الاختبارات لمثيلات فئة النوع باستخدام القوانين.
algebra
: اكتب الفئات لتمثيل الهياكل الجبرية.
alleycats-core
: مثيلات وفئات القطط غير القانونية.
هناك العديد من وحدات Cats الأخرى الموجودة في عمليات إعادة شراء منفصلة حتى تتمكن من الحفاظ على دورات إصدار مستقلة.
cats-effect
: نوع IO
القياسي مع فئات نوع Sync
Async
Effect
cats-mtl
: فئات محولات للقطط Monads، Applicatives وFunctors.
mouse
: رفيق صغير للقطط يوفر تركيبًا مناسبًا (ويُعرف أيضًا باسم طرق الامتداد)
kittens
: الاشتقاق التلقائي لمثيل فئة النوع للقطط ووظائف الأداة المساعدة العامة
cats-tagless
: أدوات مساعدة للجبر المشفر النهائي بدون علامات
cats-collections
: هياكل البيانات التي تسهل البرمجة الوظيفية البحتة
cats-testkit-scalatest
: تكامل أدوات اختبار القطط مع Scalatest
تتوفر ملاحظات الإصدار السابقة الخاصة بـ Cats في CHANGES.md.
الروابط:
موقع الكتروني: typelevel.org/cats/
سكالادوك: typelevel.org/cats/api/
فئات الكتابة: typelevel.org/cats/typeclasses.html
أنواع البيانات: typelevel.org/cats/datatypes.html
نظرة عامة على الجبر: typelevel.org/cats/algebra.html
المسرد: typelevel.org/cats/nomenclature.html
الموارد للمتعلمين: typelevel.org/cats/resources_for_learners.html
الأسئلة الشائعة: typelevel.org/cats/faq.html
النظام البيئي لمستوى الكتابة: typelevel.org/cats/typelevelEcosystem.html
تجري حاليًا مناقشة حول القطط حول مشكلات GitHub وصفحات العلاقات العامة وDiscord:
يحتوي Typelevel Discord على قنوات #cats و#cats-dev، بالإضافة إلى قنوات مجتمعية مثل #beginners. يرجى الانضمام إلينا!
من المتوقع أن يتبع الأشخاص قواعد سلوك Scala عند مناقشة القطط على GitHub أو Discord أو أماكن أخرى.
نأمل أن يكون مجتمعنا محترمًا ومفيدًا ولطيفًا. إذا وجدت نفسك متورطًا في موقف أصبح ساخنًا، أو فشل في الارتقاء إلى مستوى توقعاتنا، فيجب عليك فك الارتباط والاتصال بأحد القائمين على المشروع على انفراد. نأمل أن نتجنب ترك الاعتداءات البسيطة وسوء الفهم يتصاعد إلى مشاكل أكبر.
إذا تعرضت للمضايقة، يرجى الاتصال بأحدنا على الفور حتى نتمكن من دعمك.
بعد الإصدار 1.0.0
، قررنا استخدام MAJOR.MINOR.PATCH Semantic Versioning 2.0.0 من الآن فصاعدًا، والذي يختلف عن مخطط EPOCH.MAJOR.MINOR الشائع بين مكتبات Java وScala (بما في ذلك Scala lang).
تسعى Cats جاهدة لتوفير أساس متين ومستقر للنظام البيئي لمكتبات FP. وبالتالي، فإننا نتعامل مع صيانة التوافق الثنائي مع الإصدارات السابقة بأولوية عالية. في الإصدارات الدلالية، يُسمح فقط بالتغيير العكسي بين الإصدارات الرئيسية . سوف نحافظ على التوافق الثنائي مع الإصدارات السابقة بين إصدارات PATCH و MINOR . على سبيل المثال، عندما نصدر Cats 1.1.0
، سيكون ثنائيًا متوافقًا مع الإصدارات السابقة 1.0.x
على سبيل المثال، سيكون JAR الجديد بديلاً مباشرًا للجار القديم. يعد هذا أمرًا بالغ الأهمية عندما يعتمد تطبيقك الماسي على Cats - اعتمادًا على مكتبتين أو أكثر تعتمد جميعها على Cats. إذا قامت إحدى المكتبات بالترقية إلى الإصدار 1.1.0
Cats الجديد قبل الأخرى، فسيظل تطبيقك يعمل بفضل هذا التوافق الثنائي العكسي.
تجدر الإشارة أيضًا إلى أنه وفقًا للإصدار الدلالي، يجب زيادة الإصدار MINOR Y (xYz | x > 0) إذا تم تقديم وظيفة جديدة متوافقة مع الإصدارات السابقة إلى واجهة برمجة التطبيقات العامة. ويجب زيادتها إذا تم وضع علامة على أي وظيفة عامة لواجهة برمجة التطبيقات (API) على أنها مهملة.
ستتطلب أي تغييرات كسرية ثنائية حدوث زيادة كبيرة في الإصدار، وهو الأمر الذي سنكون حذرين للغاية بشأنه. سنفكر أيضًا في استخدام اسم organization
والحزمة للإصدارات الرئيسية في المستقبل. لكن هذا القرار لم يتخذ بعد.
توجد قائمة (غير شاملة) للشركات التي تستخدم Cats في الإنتاج في ADOPTERS.md. لا أرى لك؟ يمكنك إضافته في العلاقات العامة! وإذا كنت تستطيع، فكر في دعمنا.
المشرفون الحاليون (الأشخاص الذين يمكنهم دمج طلبات السحب) هم:
روساباكر روس بيكر
أرمانبيلج أرمان بيلج
جونينك بي أوسكار بويكين
أديلبيرتك أديلبرت تشانغ
دانيشغ دانيال إسيك
لوكا جي سي بي لوكا جاكوبويتز
بيترنينز بيتر نيينز
بوليكات روب نوريس
غير إريك أوشيم
بارامباني فيليبو ماريوتي
mpilquist مايكل بيلكويست
مايسابين مايلز سابين
djspiewak دانيال سبيواك
توماس فرانك توماس
ساتورج سيرجي تورجاشوف
جوليان تروفو جوليان تروفو
كايلووانغ كايلو وانغ
الملتزمون المتقاعدون هم:
سيدوبس كودي ألين
ترافيسبراون ترافيس براون
نحن نتبع حاليًا ممارسة تتطلب توقيعين على الأقل لدمج العلاقات العامة للكود (وفي حالة المشكلات الكبيرة أو المثيرة للجدل، قد ننتظر المزيد). بالنسبة للأخطاء المطبعية أو تحسينات التوثيق أو إصلاحات البناء البسيطة، فإننا نخفف ذلك من خلال تسجيل خروج واحد. مزيد من التفاصيل في وثيقة العملية.
كل التعليمات البرمجية متاحة لك بموجب ترخيص MIT، وهي متاحة على http://opensource.org/licenses/mit-license.php وأيضًا في ملف COPYING. تم تصميم التصميم من خلال العديد من المشاريع الأخرى، ولا سيما Scalaz.
حقوق الطبع والنشر للمشرفين، 2015-2024.