On 29 Jun 2015 at 8:37, Vicente J. Botet Escriba wrote:
Empty => False (future/monad/result/option) Errored/Excepted => Indeterminate (future/monad/result) Value => True (future/monad/result/option)
The meaning of empty in optional/option and future is not the same. For the fist is a valid state, for the second is an invalid state. In addition asynchronous types have an additional state not-ready, e.g. future can be invalid, not-ready, exceptional or valued.
Indeed very true. One of my worries in my design is that you cannot send an empty state via future<T>, only a T/error/exception. I console myself that future<void> effectively means sending an empty state, however in monad<void> empty state is not void state. That's one of my design tradeoffs. I don't much like it, but it does make the code much simpler. I am essentially trusting that the programmer does not do anything too silly. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/