Мне нужно сделать свой собственный тип данных для представления натуральных чисел. Типы данных (предварительно) определены, как показано ниже. Кроме того, мне нужно создать функции для преобразования между собственным типом данных 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
Это мои текущие тестовые случаи: тестовые случаи
from_ZZ_to_Zed (Plus x) = ...
- person Willem Van Onsem   schedule 24.10.2019