2
のために再実装fromIntegerしようとしたとき、私は次のコードを持っている:イドリス:全体のチェックが失敗したナット
module Test
data Nat' = S' Nat' | Z'
Num Nat' where
x * y = ?hole
x + y = ?hole
fromInteger x = if x < 1 then Z' else S' (fromInteger (x - 1))
を、私は最後の行に関するエラーメッセージが表示されます。
Test.idr:6:5:
Prelude.Interfaces.Test.Nat' implementation of Prelude.Interfaces.Num, method fromInteger is
possibly not total due to recursive path Prelude.Interfaces.Test.Nat' implementation of
Prelude.Interfaces.Num, method fromInteger --> Prelude.Interfaces.Test.Nat' implementation of
Prelude.Interfaces.Num, method fromInteger
機能すべき最終的にfromIntegerの引数が最初のケースを選択するのに十分に小さくなるので、常に結果を与えます。しかし、Idrisはこれを理解していないようです。この関数の何が問題なのですか?このエラーを修正するにはどうすればよいですか?
ありがとうございました。私はそれを試して、それは問題を解決します。 – Liisi