A monad in Swift terms is essentially just a container type with an initializer that lets you put something in it, and implements flatMap. In Haskell, the equivalents are return and &gt;&gt;=. You can do more with it in Haskell because Monad is essentially a protocol, so you can rely on monadic types having those functions defined in terms of them.<p>Array and Optional are examples. RAC&#x27;s SignalProducer is... maybe one? Maybe three?<p>That&#x27;s really all there is.