--- bfsG :: [Gss] -> Grid -> [Path] -> [Point] -> [Path]
--- -- bfsG ps _ paths closed | trace ((show ps) ++ " :: " ++ (show paths) ++ " X " ++ (show closed)) False = undefined
--- bfsG [] _ paths _ = paths
--- bfsG (p:ps) g paths closed =
--- if current p /= origin p && isDigit currentCell
--- then bfsG ps g (newPath:paths) ((current p):closed)
--- else bfsG (ps ++ extraAgenda) g paths ((current p):closed)
--- where currentCell = (g!(current p))
--- newPath = Path {joins = S.fromList [current p, origin p], path = gssPath p}
--- nextPoints = filter (\np -> np `notElem` ((gssPath p) ++ closed)) $ gridNeighbours g $ current p
--- extraAgenda = map (\n -> Gss {origin = origin p, goal = goal p, current = n, gssPath = (n:(gssPath p))}) nextPoints
-