型推論を無効にする方法を発見。 型推論をごまかす Y コンビネータ L の定義は、本当は L x y = x (y y) です。(y y)の部分が自己言及になって、GHC ではこの部分の型をうまく処理できません。そこで、unsafeCoerce で型推論をごまかしています。 http://d.hatena.ne.jp/kazu-yamamoto/20100519/1274240859 おかげで、断念していたHaskell版のチャーチ数の引き算とYコンビネータを使った割り算(と剰余)が作れた。 これで加減乗除の基本演算がそろった。感謝。 import Unsafe.Coerce m x = x (unsafeCoerce x) y f = m (\x -> f (m x)) true x y = x false x y = y not' p = p false true and' p q =