def head_compose(*decomposition_functions):
    """Compose the first function with all the remaining functions."""
    main_decomposition_function = decomposition_functions[0]
    argument_decomposition_functions = [f for f in decomposition_functions[1:]]

    def head_composition(in_graph_component):
        graph_components = [f(in_graph_component)
                            for f in argument_decomposition_functions]
        return main_decomposition_function(*graph_components)
    return head_composition