title: Are side-effects possible in pure functional programming
body: <p>I have been trying to wrap my head around functional programming for a while now.  I have looked up lambda calculus, LISP, OCaml, F# and even combinatorial logic but the main problem I have is this - how do you do things that require side effects like:</p>
  <ul>
  <li>interacting with a user,</li>
  <li>communicating with a remote service, or</li>
  <li>handle simulating using random sampling</li>
  </ul>
  <p>without violating the fundamental premise of pure functional programming which is, that for a given input the output is deterministic?</p>
  <p>I hope I am making sense; if not I welcome any attempts to help me understand.  Thanks in advance.</p>