If all you are concerned about is a specific output caused by a specific input, then it's difficult to see what could be better than [input] —> [output] in representing that situation. And if regarded in the same spirit as a programming flowchart, a picture that reflects a variety of causal paths relative to various possible standing conditions, prior causal outputs, and/or feedback, can then be nuanced by incorporating subroutines.