2
我有以下代码:伊德里斯:试图在总体检查失败重新实现fromInteger进行NAT
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的参数最终会变得足够小以选择第一种情况。但伊德里斯似乎并不了解这一点。这个函数有什么问题,我该如何解决这个错误?
谢谢。我试过了,它解决了这个问题。 – Liisi