Skip to content

Instantly share code, notes, and snippets.

@strager
Created October 22, 2013 02:54
Show Gist options
  • Select an option

  • Save strager/7094508 to your computer and use it in GitHub Desktop.

Select an option

Save strager/7094508 to your computer and use it in GitHub Desktop.
Notes and ideas about effects

Effects

  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment