For a homework assignment, we’ve been instructed to complete a task without introducing any “side-effects”. I’ve looked up “side-effects” on Wikipedia, and though I get that in theory it means “modifies a state or has an observable interaction with calling functions”, I’m having trouble figuring out specifics.
For example, would creating a value that holds a non-compile time result be introducing side effects?
Say I had (might not be syntactically perfect):
val myList = (someFunction x y);;
if List.exists ((=) 7) myList then true else false;;
Would this introduce side-effects? I guess maybe I’m confused on what “modifies a state” means in the definition of side-effects.
No; a side-effect refers to e.g. mutating a
refcell with the assignment operator:=, or other things where the value referred to by a name changes over time. In this case,myListis an immutable value that never changes during the program, thus it is effect-free.See also
http://en.wikipedia.org/wiki/Referential_transparency_(computer_science)