-
Ordered
The ordering of two operations is significant (outside of data dependencies). For example, writing to a file and removing a file are order-dependent.
-
Mutating
An operation is observable to non-deterministic operations. Mutations are non-reversible after a non-deterministic operation depends upon the mutation.
-
Non-deterministic
The result of an operation depends upon mutations of other operations.
-
Flow-controlling
An operation may change how a program is executed. Process and thread forks, exceptions, coroutines, signals, and laziness fall into this category.
-
Diverging
An operation may not return a value, despite its type claiming to return a value. An infinite loop is the divergent.
-
Transactional
Like mutation, but observing operations are reversible.
Created
October 22, 2013 02:54
-
-
Save strager/7094508 to your computer and use it in GitHub Desktop.
Notes and ideas about effects
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment