RepositoryScala
scalaz

scalaz/scalaz-deriving

Principled, fast, typeclass derivation.

55sao
11fork
4issue
0lượt xem

🧬 Suy diễn typeclass nhanh chóng và nguyên tắc với scalaz-deriving

scalaz-deriving giúp thêm nhanh implicit typeclass instances cho data types mà không cần chờ biên dịch lâu như cách truyền thống.

scalaz-deriving là bộ công cụ cho phép suy diễn (derivation) các instance của typeclass trong Scala. Dự án có hai phần chính: một plugin biên dịch với annotation @deriving để tự động thêm implicit instances vào companion object, và một hệ thống derivation nguyên tắc cho người viết typeclass dựa trên scalaz-core.

✨ Điểm nổi bật

  • @deriving annotation: Tự động tạo implicit instances trong companion object thông qua macro, tương thích với magnolia, shapeless và các deriver thủ công khác.
  • @xderiving annotation: Hỗ trợ lớp có một tham số (bao gồm cả AnyVal wrappers), sử dụng xmap để chuyển đổi giữa kiểu gốc và kiểu mục tiêu.
  • scalaz.Deriving: Hỗ trợ derivation cho case class và sealed trait ADTs lớn tùy ý, hoạt động trực tiếp với @deriving annotation.
  • Hiệu năng biên dịch nhanh: Giảm thời gian biên dịch đáng kể so với các thư viện khác như magnolia.
  • Cấu hình wiring tùy chỉnh: Cho phép cấu hình trong file deriving.conf để định nghĩa cách mapping giữa TypeClass và phương pháp derivation.
  • Hỗ trợ typeclass mới: Thêm các typeclass như Alt, Decidable, Divisible với các phương thức apply2, altly2, divide2, choose2.
  • Derivations có sẵn: Cung cấp derivation cho Equal, Order, Semigroup, Monoid trong scalaz-core, cũng như Show và Arbitrary (tùy chọn).

💡 Vì sao đáng chú ý

scalaz-deriving khác biệt từ các giải pháp khác bằng cách tách rời annotation @deriving (không phụ thuộc scalaz) và hệ thống derivation dựa trên scalaz-core. Điều này giúp người dùng dễ dàng áp dụng mà không cần mang theo toàn bộ dependency của scalaz. Đặc biệt, thời gian biên dịch nhanh hơn đáng kể so với các thư viện generic derivation khác như shapeless hay magnolia, rất phù hợp cho dự án lớn cần tối ưu tốc độ build.


#Scala #Scalaz #TypeclassDerivation #CompilerPlugin #Macros #FunctionalProgramming #TiniX

Dự án tương tự

Khám phá các dự án và mô hình AI khác có sự tương đồng.

RepositoryScala
wartremover/wartremover

Flexible Scala code linting tool

1.1k
Oct 9, 2026
RepositoryScala
djspiewak/shims

Seamless interop layer between cats and scalaz

173
Feb 26, 2021
RepositoryKotlin
arrow-kt/arrow-meta

Functional companion to Kotlin's Compiler

406
Jun 4, 2026
RepositoryTypeScript
microsoft/vscode

Visual Studio Code

194.3k
Oct 25, 2026
RepositoryPython
microsoft/markitdown

Python tool for converting files and office documents to Markdown.

192.3k
Oct 23, 2026
RepositoryScala
scalaz/scalaz

Principled Functional Programming in Scala

4.7k
Oct 19, 2026
RepositoryScala
typelevel/cats-effect

The pure asynchronous runtime for Scala

2.2k
Oct 17, 2026
RepositoryScala
softwaremill/sttp

The Scala HTTP client you always wanted!

1.5k
Oct 18, 2026
RepositoryScala
plokhotnyuk/jsoniter-scala

Scala macros for compile-time generation of safe and ultra-fast JSON codecs + circe booster

820
Oct 24, 2026