>>287
> 例えば、野球を考えます

Haskell ならこういう書き方をして、
ピッチャーとバッターとキャッチャーのボールを通しての関係性を
静的に表現すること「も」できる(もっと別の表現方法もできる)。

result <== catcher <== batter <== pitcher

ピッチャーが投げたボールがバットに当たったのか、
バットにかすったがキャッチャーが取ったのか、
ストライクゾーンを外れたのか、バッターが打ったのか、
キャッチャーが取りこぼしたのか、取ったのか、
といった情報が result を評価することで全て分かる仕組みを作れる。

正確には result を評価することが、一球投げることを意味する。
正直、恥ずかしながら野球をよく知らないので、
適切な用語を関数名などにつければ、もっと分かりやすくなると思うが。