Cats は、Scala プログラミング言語の関数型プログラミングの抽象化を提供するライブラリです。
Scala はオブジェクト指向プログラミングと関数型プログラミングの両方をサポートしており、これは標準ライブラリのハイブリッド アプローチに反映されています。 Cats は、コアでバイナリ互換性があり、モジュール式で親しみやすく効率的な関数型プログラミングの抽象化を提供するよう努めています。 Cats のより広範な目標は、Scala アプリケーションでの関数型プログラミングをサポートする、純粋で型に富んだライブラリのエコシステムの基盤を提供することです。
Cats の動機について詳しくは、こちらをご覧ください。
この名前は、「カテゴリー理論」から来た単語categoryを遊び心をもって短縮したものです。
いずれにせよ、Cats を使用するのに圏論について何も知る必要はありません。
このプロジェクトは、貢献してくださったすべての人々のおかげで存在します。 Cats への貢献を歓迎しており、Cats の構築にご協力いただければ幸いです。開発者として参加する方法の詳細については、コントリビューター ガイドを参照してください。手始めに何かを探している場合は、ここに初心者向けのリストがあります。
財政的に貢献して、コミュニティの維持にご協力ください。寄付は、メンテナのオフィスアワー、ドキュメントの改善、戦略的取り組みを直接サポートします。
プラチナ スポンサーシップは月額 950 米ドルから始まります。
プラチナ スポンサーはここ https://typelevel.org/cats に表示されます。
ゴールド スポンサーシップは月額 420 米ドルから始まります。
ゴールド スポンサーは https://typelevel.org/cats に表示されます。
シルバー スポンサーシップは月額 180 米ドルから始まります。
シルバー スポンサーは https://typelevel.org/cats に表示されます。
月額わずか 5 米ドルの定期的な寄付でバッカーになりましょう。
後援者はここ https://typelevel.org/cats に表示されます
ありがたいことに、1 回限りの寄付や定期的な寄付も受け付けています。
他の寄稿者はここ https://typelevel.org/cats に表示されます。
<script src="/cats/js/sponsors.js"></script>
Cats は、標準の JVM ランタイムだけでなく、Scala.js と Scala Native でも利用できます。
Cats は、デフォルトでは有効になっていない SI-2712 の修正による改良された型推論に依存しています。 Scala 2.12の場合は、 build.sbt
に以下を追加する必要があります。
scalacOptions += "-Ypartial-unification"
(Scala 2.13 以降、部分統合はデフォルトでオンになっており、コンパイラーは-Ypartial-unification
を受け入れなくなりました)
次に、次のコードをbuild.sbt
に追加して、Cats 依存関係を作成します。
libraryDependency += "org.typelevel" %% "cats-core" % "2.9.0"
これにより、cats-core モジュールが取り込まれます。他の機能が必要な場合は、次のモジュールの中から選択できます ( "cats-core"
の代わりに使用されます)。
cats-kernel
: 基本型クラスの小さなセット (必須)。
cats-core
: ほとんどのコア タイプのクラスと機能 (必須)。
cats-laws
: 型クラスのインスタンスをテストするための規則。
cats-free
: 無料のモナドなどの自由な構造、およびサポートされる型クラス。
cats-testkit
: 法則を使用して型クラス インスタンスのテストを作成するためのライブラリ。
algebra
: 代数構造を表す型クラス。
alleycats-core
: 合法ではない Cats インスタンスとクラス。
独立したリリース サイクルを維持できるように、別のリポジトリにある他にもいくつかの Cats モジュールがあります。
cats-effect
: 標準IO
タイプとSync
、 Async
、およびEffect
タイプのクラス
cats-mtl
: Cats のモナド、アプリカティブ、およびファンクターのトランスフォーマー型クラス。
mouse
: 便利な構文 (別名拡張メソッド) を提供する Cats の小さな付属品
kittens
: Cats および汎用ユーティリティ関数の自動型クラス インスタンス導出
cats-tagless
: タグのない最終的なエンコードされた代数のためのユーティリティ
cats-collections
: 純粋な関数型プログラミングを容易にするデータ構造
cats-testkit-scalatest
: Cats テストキットと Scalatest の統合
Cats の過去のリリース ノートは CHANGES.md で入手できます。
リンク:
ウェブサイト: typelevel.org/cats/
ScalaDoc: 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
FAQ: typelevel.org/cats/faq.html
Typelevel エコシステム: typelevel.org/cats/typelevelEcosystem.html
Cats に関するディスカッションは現在、GitHub の問題、PR ページ、Discord で行われています。
Typelevel Discord には #cats および #cats-dev チャンネルに加えて、#beginners などのコミュニティ チャンネルもあります。 ぜひご参加ください!
GitHub、Discord、またはその他の場所で Cats について議論する場合、人々は Scala の行動規範に従うことが期待されます。
私たちは、私たちのコミュニティが敬意を持ち、親切で親切であることを願っています。激化する状況、または私たちの期待に応えられない状況に巻き込まれたことに気付いた場合は、関与を解除し、プロジェクト管理者のいずれかに内密に連絡する必要があります。私たちは、軽微な攻撃や誤解が大きな問題に発展することを避けたいと考えています。
嫌がらせを受けている場合は、サポートできるよう直ちに当社のいずれかにご連絡ください。
1.0.0
リリース後、今後はMAJOR.MINOR.PATCH Semantic Versioning 2.0.0 を使用することにしました。これは、Java ライブラリと Scala ライブラリ (Scala 言語を含む) で一般的なEPOCH.MAJOR.MINORスキームとは異なります。
Cats は、FP ライブラリのエコシステムに強固で安定した基盤を提供するよう努めています。したがって、私たちは下位バイナリ互換性の維持を高い優先度で扱います。セマンティック バージョニングでは、後方破壊的変更はメジャーバージョン間でのみ許可されます。 PATCH バージョンとMINORバージョンの間での下位バイナリ互換性は維持されます。たとえば、 Cats 1.1.0
リリースすると、以前の1.0.x
バージョンとの下位バイナリ互換性が保たれます。つまり、新しい JAR は古い JAR のドロップイン置き換えになります。これは、アプリケーションが Cats に依存している場合、つまりすべて Cats に依存している 2 つ以上のライブラリに依存している場合に重要です。一方のライブラリがもう一方のライブラリよりも先に新しい1.1.0
Cats にアップグレードされた場合でも、この下位バイナリ互換性のおかげでアプリケーションは引き続き実行されます。
また、注目に値するのは、セマンティック バージョニングに従って、新しい下位互換性機能がパブリック API に導入された場合、 MINORバージョン Y (xYz | x > 0) をインクリメントしなければならないということです。パブリック API 機能が非推奨としてマークされている場合は、この値を増分する必要があります。
バイナリの重大な変更にはメジャーバージョンの変更が必要となるため、これについては非常に慎重になります。将来的には、メジャー バージョン管理にorganization
とパッケージ名を使用することも検討します。しかし、その決定はまだ下されていない。
実稼働環境で Cats を使用している企業の (完全ではない) リストが ADOPTERS.md に掲載されています。あなたのものは見えませんか? PRに追加できます!そして、可能であれば、私たちをサポートすることを検討してください。
現在のメンテナ (プル リクエストをマージできる人) は次のとおりです。
ロッサベイカー ロス・ベイカー
アルマンビルジ アルマンビルジ
ジョニネック・P・オスカー・ボイキン
adelbertc アデルバート・チャン
ダニチェグ ダニエル・エシク
ルカJCB ルカ・ジャコボウィッツ
ピーター・ナイエンス ピーター・ナイエンス
tpolecat ロブ・ノリス
エリック・オシイム以外
バランバニ フィリッポ マリオッティ
エムピルクイスト マイケル・ピルクイスト
マイルセービン マイルセービン
djspiewak ダニエル・スピーワク
フトーマス フランク・トーマス
Satorg セルゲイ・トルガショフ
ジュリアン・トリュフォー ジュリアン・トリュフォー
カイルオワン 王カイルオ
引退したコミッターには次のような人がいます。
シーダブズ コディ・アレン
トラヴィスブラウン トラヴィスブラウン
現在、コード PR をマージするには少なくとも 2 回のサインオフを要求するという慣行に従っています (大規模な問題や論争のある問題の場合は、さらに待つ場合があります)。タイプミス、ドキュメントの改善、またはマイナーなビルド修正については、これをシングル サインオフに緩和します。詳細についてはプロセス文書をご覧ください。
すべてのコードは MIT ライセンスに基づいて入手でき、http://opensource.org/licenses/mit-license.php および COPYING ファイルからも入手できます。このデザインは、他の多くのプロジェクト、特に Scalaz の影響を受けています。
著作権は管理者にあります。2015 年から 2024 年まで。