手続き型ならobserverパターンでやるんじゃないかな。

きっと難しくなる要因は純粋言語だというところにありそう。