Допустим, есть график и некоторый набор функций, таких как:
create-node :: Graph -> (Graph, Node)
split-node :: Graph -> Node -> (Graph, Node, Node)
Я хотел бы создать версии тех функций, которые не ожидают Graph
в качестве аргумента, в основном для удобства (желательно без монад, поэтому мне не нужно было бы оборачивать каждый фрагмент кода, манипулирующий графом, в блок монады) , Ну и что с этим:
create-node :: (Graph -> (Graph, Node))
split-node :: (Graph -> Node) -> ((Graph -> Node), (Graph -> Node))
Или, в более общем смысле:
fun :: (Graph -> Argument) -> ... -> (Graph -> Result)
Тогда я смог бы использовать значения (Graph -> ...)
, как если бы они были нормальными узлами. В конце, чтобы получить реальный график из значения (Graph -> ...)
, просто примените его к пустому графику. Это разумный подход?