@ukh

Как сделать следующие функции Haskell?

Срочно нужна помощь!!! Кто может, помогите пожалуйста!!
Даны даты:
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
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
@akkakk
Мдам, сам вот каждый раз сижу и задаюсь вопросом что Эспонда курит
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы