depends on ambient state like the clock, the locale, environment variables, or global options (stated instead of NonDet)
runs its work in parallel (workers, a cluster, a future/promise backend); says nothing about purity, only reproducibility and where an error surfaces.
sets ambient state later calls read back: the working directory, environment variables, options, the locale, the RNG seed.
calls native code through the foreign function interface, like .Call
dispatches on the class of an argument (S3, S4, or S7), a group generic like + on either operand
returns invisibly, so the result is not auto-printed
produces a language object, like quote or deparse
pure on its own, but it runs code it is handed, so whatever that code does happens too.
a method that is reached by dispatch, like print.foo (see SigDbInferable)
the result may differ between two identical calls for a reason neither Random nor Ambient covers (see SigDbInferable)
the R language itself provides it: a .Primitive or .Internal of a base package, if and for and the operators included.
computes a result and nothing else, the positive counterpart of hasUnknownSideEffects (excludes ImpureProps)
binds, rebinds, or removes names outside of its own frame, like assign or library
may signal an error, like stop() (see SigDbInferable)
The properties of the behavior of a call, as a bitmask.