title: Is it possible to do a search on a graph constructed with the tying-the-knot strategy?
body: <p>The tying-the-knot strategy can be used to construct graphs such as, using a simple two-edged graph as an example:</p>
  
  <pre><code>data Node = Node Node Node
  
  -- a - b
  -- |   |
  -- c - d
  square = a where
      a = Node b c
      b = Node a d
      c = Node a d
      d = Node b c
  </code></pre>
  
  <p>That strategy is rather elegant, but I couldn't find a way to actually use it without Int labels. For example, how could I write a function that counts the amount of nodes on the <code>square</code> value?</p>
  
  <pre><code>countNodes :: Node -&gt; Int
  countNodes = ... ??? ...
  
  main = print $ countNodes square
  -- output: 4
  </code></pre>