せめて`x0`の型、`x1`の型、`f1`の型くらいはどこかで書いた方がいいかも。
あと、`x0`だけ性質が違う(他はMで包まれていないことが確実だけど、x0はf1による)ので、もしf1の引数の型がMで包まれたものを取るなら、命名を分けたい。
そうじゃないならそのままで(どっちにしてもf1の型は欲しい)。