Cats는 Scala 프로그래밍 언어의 함수형 프로그래밍에 대한 추상화를 제공하는 라이브러리입니다.
Scala는 객체 지향 프로그래밍과 함수형 프로그래밍을 모두 지원하며 이는 표준 라이브러리의 하이브리드 접근 방식에 반영됩니다. Cats는 핵심적이고 바이너리 호환 가능하며 모듈식이며 접근하기 쉽고 효율적인 기능적 프로그래밍 추상화를 제공하기 위해 노력합니다. Cats의 더 넓은 목표는 Scala 애플리케이션에서 함수형 프로그래밍을 지원하기 위해 순수하고 유형이 풍부한 라이브러리의 생태계 기반을 제공하는 것입니다.
Cats의 동기에 대한 자세한 내용을 보려면 여기로 이동하세요.
이름은 "범주 이론"에서 나온 단어 범주 를 장난스럽게 단축한 것입니다.
그럼에도 불구하고 Cats를 사용하기 위해 범주 이론에 대해 아무것도 알 필요가 없습니다.
이 프로젝트는 기여하는 모든 사람들 덕분에 존재합니다. Cats에 대한 기여를 환영하며 Cats 구축에 도움을 주시길 바랍니다. 개발자로서 참여하는 방법에 대한 자세한 내용은 기여자 가이드를 참조하세요. 시작할 무언가를 찾고 있다면 여기에 초보자 친화적인 목록이 있습니다.
재정적인 기부자가 되어 지역 사회를 유지하는 데 도움을 주세요. 기부금은 관리자의 근무 시간, 더 나은 문서화 및 전략적 이니셔티브를 직접적으로 지원합니다.
플래티넘 후원은 월 $950 USD부터 시작됩니다.
플래티넘 후원자는 여기 https://typelevel.org/cats에 나타납니다.
골드 스폰서십은 월 $420 USD부터 시작됩니다.
골드 스폰서는 여기 https://typelevel.org/cats에 나타납니다.
실버 스폰서십은 월 $180 USD부터 시작됩니다.
실버 스폰서는 여기 https://typelevel.org/cats에 나타납니다.
월 $5 USD의 반복 기부로 후원자가 되세요.
후원자는 여기 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 += "-Y부분 통합"
(부분 통합은 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
: 법칙을 사용하여 유형 클래스 인스턴스에 대한 테스트를 작성하기 위한 lib입니다.
algebra
: 대수 구조를 나타내는 클래스를 입력합니다.
alleycats-core
: 합법적이지 않은 고양이 인스턴스 및 클래스입니다.
독립적인 릴리스 주기를 유지할 수 있도록 별도의 저장소에 있는 다른 여러 Cats 모듈이 있습니다.
cats-effect
: Sync
, Async
및 Effect
유형 클래스가 포함된 표준 IO
유형
cats-mtl
: Cats의 Monads, Applicatives 및 Functors에 대한 변환기 유형 클래스입니다.
mouse
: 편리한 구문(확장 메소드라고도 함)을 제공하는 Cats의 작은 동반자
kittens
: Cats 및 일반 유틸리티 함수에 대한 자동 유형 클래스 인스턴스 파생
cats-tagless
: 태그 없는 최종 인코딩 대수를 위한 유틸리티
cats-collections
: 순수 함수형 프로그래밍을 용이하게 하는 데이터 구조
cats-testkit-scalatest
: Scalatest와 Cats 테스트킷 통합
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.org/cats/typelevelEcosystem.html
Cats에 대한 토론은 현재 GitHub 문제, PR 페이지 및 Discord에서 진행되고 있습니다.
Typelevel Discord에는 #cats 및 #cats-dev 채널은 물론 #beginners와 같은 커뮤니티 채널도 있습니다. 우리와 함께해주세요!
사람들은 GitHub, Discord 또는 기타 장소에서 Cats에 대해 논의할 때 Scala 행동 강령을 따라야 합니다.
우리 커뮤니티가 존중받고 도움이 되며 친절해지기를 바랍니다. 과열된 상황에 휘말리거나 우리의 기대에 부응하지 못하는 상황에 처했다면, 참여를 중단하고 프로젝트 관리자 중 한 명에게 개인적으로 연락해야 합니다. 우리는 사소한 공격과 오해가 더 큰 문제로 확대되는 것을 방지하기를 바랍니다.
귀하가 괴롭힘을 당하고 있는 경우 즉시 저희 중 한 명에게 연락하여 지원을 받으십시오.
1.0.0
릴리스 이후 우리는 Java 및 Scala 라이브러리(Scala lang 포함)에서 일반적으로 사용되는 EPOCH.MAJOR.MINOR 체계와는 다른 MAJOR.MINOR.PATCH Semantic Versioning 2.0.0을 사용하기로 결정했습니다.
Cats는 FP 라이브러리 생태계를 위한 견고하고 안정적인 기반을 제공하기 위해 노력하고 있습니다. 따라서 우리는 이전 버전의 바이너리 호환성 유지 관리를 높은 우선순위로 처리합니다. 의미 체계 버전 관리에서는 MAJOR 버전 간에 만 역방향 주요 변경이 허용됩니다. 우리는 PATCH 버전 과 MINOR 버전 간의 이전 바이너리 호환성을 유지할 것입니다. 예를 들어 Cats 1.1.0
출시하면 이전 1.0.x
버전과 역방향 바이너리 호환이 가능합니다. IE 새 JAR은 이전 JAR을 즉시 대체할 수 있습니다. 이는 모두 Cats에 의존하는 두 개 이상의 라이브러리에 따라 애플리케이션이 Cats에 대한 다이아몬드 종속성을 가질 때 중요합니다. 한 라이브러리가 다른 라이브러리보다 먼저 새로운 1.1.0
Cats로 업그레이드되는 경우에도 이러한 이전 버전 바이너리 호환성 덕분에 애플리케이션이 계속 실행됩니다.
또한 주목할 만한 점은 의미론적 버전 관리에 따라 새로운 이전 버전과 호환되는 기능이 공개 API에 도입되는 경우 MINOR 버전 Y(xYz | x > 0)를 반드시 증가시켜야 한다는 것입니다. 공개 API 기능이 더 이상 사용되지 않는 것으로 표시된 경우 이를 증가시켜야 합니다.
바이너리 주요 변경 사항에는 MAJOR 버전 범프가 필요하므로 이에 대해 매우 주의해야 합니다. 향후 주요 버전 관리를 위해 organization
및 패키지 이름을 사용하는 것도 고려할 것입니다. 그러나 그 결정은 아직 내려지지 않았습니다.
생산에 Cats를 사용하는 회사의 (비완전한) 목록은 ADOPTERS.md에 나와 있습니다. 당신의 것을 볼 수 없습니까? PR에 추가할 수 있어요! 그리고 가능하다면 우리를 지원해 보세요.
현재 관리자(풀 요청을 병합할 수 있는 사람)는 다음과 같습니다.
로사베이커 로스 베이커
아르망빌게 Arman Bilge
조니넥 P. 오스카 보이킨
adelbertc 아델버트 장
다니체그 다니엘 에식
루카JCB 루카 자코보비츠
피터네옌스 피터 네옌스
폴캣 롭 노리스
비 에릭 오스하임
바람바니 필리포 마리오티
mpilquist 마이클 필퀴스트
마일스 사빈 마일스 사빈
djspiewak 다니엘 스피와크
프토마스 프랭크 토마스
satorg 세르게이 토르가쇼프
줄리앙 트뤼포 줄리앙 트뤼포
카일루오왕 카일루오 왕
은퇴한 커미터에는 다음이 포함됩니다.
ceedubs 코디 앨런
트래비스브라운 트래비스브라운
우리는 현재 코드 PR을 병합하기 위해 최소 2번의 승인을 요구하는 관행을 따르고 있습니다(크고 논쟁의 여지가 있는 문제의 경우 더 기다릴 수 있습니다). 오타, 문서 개선 또는 사소한 빌드 수정의 경우 이를 단일 승인으로 완화합니다. 자세한 내용은 프로세스 문서에서 확인하세요.
모든 코드는 MIT 라이센스(http://opensource.org/licenses/mit-license.php 및 COPYING 파일)에 따라 사용할 수 있습니다. 디자인은 다른 많은 프로젝트, 특히 Scalaz에서 정보를 얻었습니다.
관리자에게 저작권을 부여하세요, 2015-2024.