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 –
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