汎用的なデータ構造をどう定義するかが鍵となりそうだな
その場合、関数型よりOOPの方が向いてる気がする