Unfortunately, his simple explanation of these concepts is just not correct. He claims functors are a container you can map on and that monads are also containers.<p>Here&#x27;s a monad (which is also an applicative functor) that isn&#x27;t a container: probability. The space of probability distributions is a functor which can be mapped. In the sampling representation:<p><pre><code>    p.map(f) = new Prob {
      def draw = f(p.draw)
    }
</code></pre>
It also supports flatmap:<p><pre><code>    p.flatMap(f) = new Prob {
      def draw = f(p.draw).draw
    }
</code></pre>
Yet nothing is &quot;contained&quot;. Each Prob object is just a random number variable generator.