title: How do I implement graphs and graph algorithms in a functional programming language?
body: <p>Basically, I know how to create graph data structures and use Dijkstra's algorithm in programming languages where side effects are allowed.  Typically, graph algorithms use a structure to mark certain nodes as 'visited', but this has side effects, which I'm trying to avoid. </p>
  
  <p>I can think of one way to implement this in a functional language, but it basically requires passing around large amounts of state to different functions, and I'm wondering if there is a more space-efficient solution. </p>