Срочно нужна помощь!!! Кто может, помогите пожалуйста!!
Даны даты:
data B = T | F deriving Show
data Nat = Zero | S Nat
data ZInt = Z Nat Nat
deriving Show
a) Сделайте функции:
oddN :: Nat -> B
fibonacci :: Nat -> Nat
isTeilerN :: Nat -> Nat -> B -- проверяет, делится ли перове число на второе
ggtN :: Nat -> Nat -> Nat -- наибольший общий делитель
b) Запрограммируйте следующие функции (при необходимости разрешается использовать только Error хаскель функцию):
(<<<) :: ZInt -> ZInt -> B -- проверяет, меньше ли первое число второго
maxZ :: ZInt -> ZInt -> ZInt
multZ :: ZInt -> ZInt -> ZInt
absZ :: ZInt -> ZInt -- абсолютное значение числа
powZ :: ZInt -> Nat -> ZInt -- степень
isTeilerZ :: ZInt -> ZInt -> B -- проверяет, делится ли перове число на второе
ggtZ :: ZInt -> ZInt -> ZInt -- наибольший общий делитель
d) Сделайте вспомогательные функции zint2Int и int2ZInt, которые упрощают тестирование функций ZInt. Можно использовать встроенные функции в Хаскеле
Пример
zint2Int (Z (S (S (S Zero))) Zero) => 3
int2ZInt 5 => Z 5 0
int2ZInt 5 => Z (S (S (S (S (S Zero))))) Zero
int2ZInt (-5) => 5
akkakk, 2 сделала, в третьем одну функцию только, остальные не догоняю :/ я вообще туплю очень в этом модуле, не понимаю, это я такая глупая, или есть ещё кому сложно так же
akkakk, да, согласна
Меня сегодня вообще мой партнёр кинул, тк я делаю все медленно и у меня есть ошибки, а он на 7 семестре уже и говорит, что это все легко:/