[Haskell-cafe] What to call Occult Effects
Olaf Klinke
olf at aatal-apotheke.de
Thu Nov 12 22:26:45 UTC 2020
On Thu, 2020-11-12 at 16:25 -0500, David Feuer wrote:
> First, for clarity, note that
>
> const id = flip const
>
> Consider a (right-)occlusive functor. We immediately see that
>
> liftA2 (flip const) m (pure x) = pure x
>
> Using the Applicative laws, we can restate this:
>
> x <$ m = pure x
>
> We get the same sort of result for a left-occlusive effect.
>
> So an occlusive effect can't have any *observable* side effects. It
> must be
> "read only".
>
I'd rather interpret this as a form of lazyness or call-by-need: If the
action's return value is not used, then the side-effects are also not
executed. Computationally, constant-ness of a function is an
undecidable property. Therefore it is questionable whether any
implementation can exhibit this sort of lazyness with side-effectful
actions.
Olaf
More information about the Haskell-Cafe
mailing list