豊福です。

酒井さん
>> datatype X = psi_inv of X -> (int -> int);
>> fun psi (psi_inv (f)) = f;
  ... 
> data X = PsiInv (X -> (Int -> Int))
> 
> psi :: X -> (X -> (Int -> Int))
> psi (PsiInv f) = f

  psi_inv をコンストラクタの PsiInv にすれば後はまんまなん
ですね。

  本文では逆極限法を使って X を構成するとかなんやらなじみの
ない話が出てくるのに実際のプログラムでは psi と psi_inv が
打ち消しあって psi の具体的な様子は一切わからなくても実行で
きてしまうところに妙に感心してしまいました。
---
                        豊福
                        nobu_toyofuku / nifty.com


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/