{-
    Starting from:
      - the tour
      - the node
    Return a new state with the two path updated
-}
visitNode :: Path -> Node -> Path
visitNode t x
  | x `elem` t  = error "node already visited"
  | x `notElem` t = t ++ [x]
  | otherwise = error "strange problem in a exaustive pattern"
visitNode :: Path -> Node -> Path
visitNode t x
  | x `elem` t  = error "node already visited"
  | x `notElem` t = t ++ [x]
  | otherwise = error "strange problem in a exaustive pattern"
visitNode t x
  | x `elem` t  = error "node already visited"
  | x `notElem` t = t ++ [x]
  | otherwise = error "strange problem in a exaustive pattern"