Mplus も抽象データ型にしとかないと、 mplus (return x) hoge とかされたらヤバい
Alternative は granjure.control.applicative.alternative で定める。
ｱｱｱｯaddするの忘れてたｧ
infer-context は Object abstract-data の場合常に nil (具体的なデータが得られたとき、 abstract-data は具体的なデータに変換されるはずである) 除去をする。しかし、その場合 abstract-data であるかどうかの判定に TypeClass であるかどうかを必要とする。 Object が TypeClass だとすると、この判定が常に真になってしまう。それに、そもそも Object に protocol を実装するのはあまりきれいな仕様ではないし、 infer-context の実装のためかえって冗長になってしまうので、 Object は TypeClass ではないとする。
infer-context を除去