Option
monad biến một cơ sở khá nhiều lần ở Scala. Có bất kỳ monads khác trong thư viện chuẩn Scala?Scala monads chuẩn nào khác ngoài Option?
Trả lời
Bạn có thể làm việc này bằng cách tra cứu câu chuyện flatMap
trong số API index. Nó cung cấp:
FilterMonadic
Stream
StreamWithFilter
TraversableMethods
Iterator
ParIterableLike
ParIterableLike
ParIterableViewLike
TraversableLike
WithFilter
MonadOps
TraversableProxyLike
TraversableViewLike
LeftProjection
RightProjection
Option
WithFilter
Responder
Zipped
ControlContext
Parser
Câu trả lời của Luigi là đúng, nhưng không có nhiều thông tin, IMHO.
Tất cả các bộ sưu tập có thể triển khai giao diện đơn lẻ, nhưng chữ ký cho flatMap
trong đó không phải là sơ đồ phẳng của đơn nguyên. Tuy nhiên, chúng sẽ hoạt động giống như hầu hết các monads. Hầu như tất cả các lớp được liệt kê bởi Luigi có liên quan đến các bộ sưu tập.
LeftProject
và RightProject
đề cập đến Either
. Về cơ bản, Either
không phải là một đơn nguyên, nhưng nếu bạn "chiếu" một bên, thì bên đó hoạt động khá giống với một đơn vị Option
.
Parser
là một đơn nguyên, tạo thành cơ sở của bộ phối hợp phân tích cú pháp.
Tôi thừa nhận tôi không nhận ra ControlContext
. Tôi tự hỏi nếu nó có liên quan đến sự tiếp tục (đó là monads là tốt).
Dưới đây là các liên kết đến ba file nguồn từ Scalaz:
Hãy nhìn vào tờ khai ví dụ. Điều đó có thể cung cấp cho bạn một ý tưởng về những loại từ thư viện chuẩn thỏa mãn giao diện đơn thuần.
OP không đề cập đến scalaz –
- 1. Scala: Chuyển đổi ẩn A-> B hoạt động cho Option [A] -> Option [B]
- 2. TraversableOnce, Future và Option trong Scala for comprehension
- 3. Tùy chọn chuyển đổi [T] thành Option [U] trong Scala
- 4. Python Cơ chế select_form() - ParseError: OPTION bên ngoài SELECT
- 5. Khi nào sử dụng Option
- 6. Streams vs monads
- 7. Ngoại lệ tiêu chuẩn Scala là gì?
- 8. Monads trong JavaScript?
- 9. Monads as adjunctions
- 10. Tại sao Option Option không bắt ReDim <undeclared>?
- 11. OPTION trong tùy chọn của GCC "-Wl, OPTION" là gì
- 12. Monads tại dấu nhắc?
- 13. scala người mới gặp rắc rối với Option, tương đương với các nhà điều hành ternary
- 14. Scala có phương pháp API chuyển đổi Seq [Option [T]] thành Seq [T] không?
- 15. Xin vui lòng giúp tôi hiểu khái niệm về các monads bên trong và bên ngoài
- 16. Looping over Monads in Haskell
- 17. Scala có phương pháp thư viện để xây dựng Option-s có tính đến các chuỗi rỗng không?
- 18. Làm thế nào để phân tích cú pháp JSON trong Scala bằng cách sử dụng các lớp Scala tiêu chuẩn?
- 19. Làm cách nào để kết hợp các monads trong Haskell?
- 20. Scala bộ sưu tập tiêu chuẩn thực hành
- 21. Loại thập phân chuẩn trong Scala 2.9 là gì?
- 22. Cách: gỡ lỗi mã Scala khi nằm ngoài một IDE
- 23. Desugaring làm-ký hiệu cho Monads
- 24. Kết hợp các monads trong Haskell
- 25. Sự khác biệt giữa monads miễn phí và fixpoints của functors?
- 26. onClick Option for Rickshaw Biểu đồ
- 27. XMLHttpRequest thay đổi POST để OPTION
- 28. scala làm thế nào để viết nếu khác
- 29. Có chức năng Scala chuẩn nào để chạy một khối với thời gian chờ không?
- 30. Xây dựng tính toán (Monads, Mũi tên, vv)
Bạn có ý định gì bởi "chữ ký cho flatMap trong chúng không phải là sơ đồ phẳng"? Bạn đang đề cập đến các máy móc ngầm? – paradigmatic
@paradigmatic, vâng. Xem Tony Morris rant [ở đây] (http://stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in -hist/1735694 # 1735694). – missingfaktor