you are able to modify “global” variables from within a function. This is a side effect because the modification of this global variable is not related to the output produced by the function. Furthermore, modifying the state of the real world is considered a side effect: printing something to the screen, reading a file, etc., are all side effecting operations. Functions that do not have side effects are called pure. 由這個觀點看來haskell & erlang 都應是被稱為 pure functional language