notogawa
型の上で計算するだけで終わりにしていいのならそのように大概のことはできるんですが,今やろうとしているのは証明であり,値レベルで云々する(≒singletonsとかでゴニョゴニョする)必要があります.たとえば,
みたいな部品が必要になると思いますが,コレを定義してやろうとすると正攻法では詰むと思います.
sNatToNat' :: Sing n -> Sing (ConvertNat n) sNat'ToNat :: Sing (ConvertNat n) -> Sing n
みたいな部品が必要になると思いますが,コレを定義してやろうとすると正攻法では詰むと思います.