[
    {
        "name": "AStar",
        "comment": " The A* pathfinding algorithm.\n\n@docs Position\n@docs Path\n@docs findPath\n@docs horizontalCost\n@docs pythagoreanCost\n",
        "unions": [],
        "aliases": [
            {
                "name": "Path",
                "comment": " A path is a `List` of `Position`s.\n",
                "args": [],
                "type": "List Position"
            },
            {
                "name": "Position",
                "comment": " A position is just a pair of (x,y) coordinates.\n",
                "args": [],
                "type": "( Int, Int )"
            }
        ],
        "values": [
            {
                "name": "findPath",
                "comment": " Find a path between the `start` and `end` `Position`s. You must\n  supply a cost function and a move function.\n\n  The cost function must estimate the distance between any two\n  positions. It doesn't really matter how accurate this estimate is,\n  as long as it *never* underestimates.\n\n  The move function takes a `Position` and returns a `Set` of possible\n  places you can move to in one step.\n\n  If this function returns `Nothing`, there is no path between the two\n  points. Otherwise it returns `Just` an `Array` of steps from `start`\n  to `end`.\n\n  Example usage.\n\n     import AStar exposing (..)\n\n\n     type World =\n         ...your custom code...\n\n\n     movesFrom : World -> Position -> Set Position\n     movesFrom world (x,y) =\n         ...your custom code...\n\n\n     findPath\n         horizontalCost\n         (movesFrom  currentWorld)\n         ( 0, 0 ) ( 2, 0 )\n     --> Just [ ( 1, 0 ), ( 2, 0 ) ]\n\n\n",
                "type": "(Position -> Position -> Float) -> (Position -> Set Position) -> Position -> Position -> Maybe Path"
            },
            {
                "name": "horizontalCost",
                "comment": " A simple costing algorithm. Think of it as the number of moves a\nrook/castle would have to make on a chessboard. Even if your piece can\nmove diagonally it will still work! A* only requires that the cost\nfunction never *under*estimates.\n",
                "type": "Position -> Position -> Float"
            },
            {
                "name": "pythagoreanCost",
                "comment": " An alternative costing algorithm, which calculates pythagorean distance.\n",
                "type": "Position -> Position -> Float"
            }
        ],
        "binops": []
    }
]