scalaz/scalaz-deriving
Principled, fast, typeclass derivation.
🧬 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
Similar Projects
Discover other similar projects and AI models.
Python tool for converting files and office documents to Markdown.
Scala macros for compile-time generation of safe and ultra-fast JSON codecs + circe booster