0
2つのタイプは同形ですが、単なる単方向のの同義語ZeroF
のためのわずかな制限がありますが、そこから抜ける方法はわかりません。パターンシノニムの方向性
data NatF x = NatF { unNatF :: (forall u. Either u x) }
pattern ZeroF <- NatF (Left _)
pattern SuccF n = NatF (Right n)
data PeanoF x = ZeroFP | SuccFP x -- isomorphe
私は間違ったことを行っていますか?
「u」の定量化は何ですか?これは一般的に有用ではありません。 –
'forall u型のボトムフリーの値は唯一です。どちらかが「何か」という形式のものです。他の方向では、 'ZeroF'は' NatF $ Left undefined'と評価されるべきです。 (なぜあなたはそれを使用していますか?) – chi
私は代数F X = 1 + Xを表現したいと思いましたが、明らかにそれはEither()xです。 – nicolas