【发布时间】:2023-06-23 19:12:01
【问题描述】:
我需要创建自己的数据类型来表示自然数。 数据类型(预)定义如下。 此外,我需要创建函数来在本机数据类型 Int 和给定的数据类型之间进行转换。 我设法从 Int 转换为给定的,并检查我的 ZZ 数据类型是否为零。 虽然我真的想不出一种方法来将零以外的任何东西转换回 Int。 我希望你们能给我一个关于如何做到这一点的提示。
data IN_1 = One | Follower IN_1 deriving Show
data ZZ = Zero | Plus IN_1 | Minus IN_1 deriving Show
type Zed = Int
from_Zed_to_ZZ :: Zed-> ZZ
from_Zed_to_ZZ x
| x == 0 = Zero
| x > 0 = Plus (helper(x))
| x < 0 = Minus (helper(abs(x)))
helper :: Zed -> IN_1
helper x
| x==1 = One
| otherwise = Follower (helper(x-1))
instance Eq ZZ where
(==) Zero Zero = True
from_ZZ_to_Zed :: ZZ -> Zed
from_ZZ_to_Zed x |x == Zero = 0
这些是我当前的测试用例: testcases
【问题讨论】:
-
可以使用模式匹配,所以
from_ZZ_to_Zed (Plus x) = ... -
猜猜这就是我所需要的。谢谢楼主!
标签: haskell instance typeclass custom-type