Tây Ban Nhatonivade/purefun
Functional Programming library for Java
Thành tựu nổi bật
Những danh hiệu mới nhất của dự án
#1 Repository Của Tháng
#1 Repository Của Tháng
#1 Repository Của Tháng
🧪 Purefun: Thư viện lập trình hàm thử nghiệm dành cho Java
Một dự án cá nhân khám phá các khái niệm lập trình hàm sâu như Higher Kinded Types và Type Classes ngay trên nền tảng Java.
Purefun là một thư viện lập trình hàm (rất nhỏ nhưng đầy tham vọng) dành cho Java, ban đầu là phần lõi của dự án zeromock. Dần dần, nó phát triển thành một thư viện độc lập với mục tiêu giúp người dùng Java tiếp cận và hiểu sâu hơn về các khái niệm như monads, type classes và higher kinded types — những điều thường chỉ có ở các ngôn ngữ như Scala hay Haskell. Dự án được lấy cảm hứng lớn từ thư viện Vavr, cũng như các dự án như Arrow, cats, fs2 và ZIO.
✨ Điểm nổi bật
- Higher Kinded Types: Mô phỏng HKT trong Java bằng mã hoá đặc biệt, kèm bộ xử lý chú thích
@HigherKindtự động sinh mã. - Type Classes: Hỗ trợ định nghĩa và sử dụng type classes một cách an toàn và trực quan.
- Option: Thay thế
Optionalcủa Java, hỗ trợ giá trịsomehoặcnone. - Try: Mô phỏng
Trycủa Scala, biểu diễn kết quả thành công hoặc thất bại. - Either: Cài đặt
Eithervới hai trường hợpleftvàright. - Validation: Kết hợp nhiều kiểm tra bằng phương thức
mapN. - Future: Phiên bản thử nghiệm của Future, chạy trên luồng ảo (virtual thread).
- Trampoline: Đệ quy an toàn trên ngăn xếp bằng cách chuyển thành vòng lặp.
- Tuples & Sequence: Hỗ trợ tuple từ 1 đến 5 phần tử và cấu trúc dữ liệu bất biến kiểu Sequence.
💡 Vì sao đáng chú ý
Purefun không chỉ là một bộ công cụ — nó là hành trình khám phá sâu sắc các khái niệm trừu tượng trong lập trình hàm, áp dụng chúng trên ngôn ngữ Java một cách sáng tạo. Đặc biệt đáng chú ý là cách nó giải quyết Higher Kinded Types — một tính năng không tồn tại nguyên sơ trong Java — thông qua mã hoá kiểu và hỗ trợ thế hệ mã tự động hóa qua annotation processor.
Dù chưa sẵn sàng cho môi trường sản xuất, Purefun mang lại giá trị lớn cho bất kỳ ai muốn học hỏi hoặc thí nghiệm với lập trình hàm trong Java. Nó không cố gắng thay thế các thư viện lớn, mà là một không gian thử nghiệm cá nhân, mở cửa cho đóng góp và phản hồi từ cộng đồng.
#Java #FunctionalProgramming #HigherKindedTypes #TypeClasses #Monads #OpenSource #Experimental #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.
The perfect companion for your Kotlin journey - Inspired by functional, data-oriented and concurrent programming
Functional programming library for Go 1.24+, inspired by fp-ts. Uses generic type aliases for a clean, composable API. Provides Option, Either, Result, IO, IOResult, Reader, and ReaderIOResult monads, plus optics (Lens, Prism, Traversal) for immutable data manipulation. Supports Functor, Applicative, and Monad abstractions with do-notation-style
The most powerful IO monad implementation in JS, possibly in any language!
🏹 Bow is a cross-platform library for Typed Functional Programming in Swift
Monad/MonadIO, Handler, Coroutine/doNotation, Functional Programming features for Rust
Functional programming for deno and javascript. Monads, semigroups, optics, parsers, state management, yadda yadda yadda.
Boilerplate-free, zero-overhead Tagless Final / typed-final / Finally Tagless DSLs in Scala