I find Applicatives very useful.<p>Applicative computations have effects and return a value. They can be combined but only in a restricted way that ensures that the effects of one of the computations do not depend on the value returned by another.<p>For example, if you read a person&#x27;s bio and photo from two independent files and combine them into a Person value, that fits the Applicative model.<p>However, if the path to the photo file were included in the bio file and not known beforehand, that wouldn&#x27;t fit the Applicative model, because one of the effects (reading the photo) depends on the result value of the other.<p>So why have this limitation, and why create a separate interface for it?<p>- For one, Applicatives are more &quot;analyzable&quot; than unrestricted monadic computations. You can identify the separate stages of a computation, collect estimates of required resources, etc.<p>- Some effects like concurrency, validation, and context-free language parsing fit the Applicative mold very well.<p>- Combinations of different Applicative effects are themselves applicative. If you have a computation that reads a file and validates the resulting data (a combination of Applicative effects) the combined effect is Applicative and can be combined with other effects of the same type.