История изменений
Исправление AndreyKl, (текущая версия) :
на самом деле первый вариант хоть и работает, но он не совсем верен, я там наповторял определений где не нужно. правильный первый вариант такой должен быть.
data Ao = Apple Int | Orange Int
difference :: Ao -> Ao -> String
difference (Apple a) (Apple b) | a == b = "both are apples, weights are equal"
| otherwise = "both are apples, but weights are different"
difference (Orange a) (Orange b) | a == b = "both are oranges, weights are equal"
| otherwise = "both are oranges, but weights are different"
difference (Apple _) _ = "first is apple, second is orange"
difference _ _ = "first is orange, second is apple"
Это считается за повторение?
Потом код короче из за того что стало можно сравнивать if(Apple == Orange) и просто конвертировать в строку. В данном варианте этого «чита» нет, чистый паттерн матчинг для фруктов.
Исправление AndreyKl, :
на самом деле первый вариант хоть и работает, но он не совсем верен, я там наповторял определений где не нужно. правильный первый вариант такой должен быть.
data Ao = Apple Int | Orange Int
difference :: Ao -> Ao -> String
difference (Apple a) (Apple b) | a == b = "both are apples, weights are equal"
| otherwise = "both are apples, but weights are different"
difference (Orange a) (Orange b) | a == b = "both are oranges, weights are equal"
| otherwise = "both are oranges, but weights are different"
difference (Apple _) _ = "first is apple, second is orange"
difference _ _ = "first is orange, second is apple"
Это считается за повторение?
Потом код короче из за того что стало можно сравнивать if(Apple == Orange). В данном варианте этого «чита» нет, чистый паттерн матчинг для фруктов.
Исходная версия AndreyKl, :
на самом деле первый вариант хоть и работает, но он не совсем верен, я там наповторял определений где не нужно. правильный первый вариант такой должен быть.
data Ao = Apple Int | Orange Int
difference :: Ao -> Ao -> String
difference (Apple a) (Apple b) | a == b = "both are apples, weights are equal"
| otherwise = "both are apples, but weights are different"
difference (Orange a) (Orange b) | a == b = "both are oranges, weights are equal"
| otherwise = "both are oranges, but weights are different"
difference (Apple _) _ = "first is apple, second is orange"
difference _ _ = "first is orange, second is apple"
Это считается за повторение?
Потом код короче из за того что стало можно сравнивать if(Apple == Orange). В данном варианте этого «чита» нет, чистый паттерн матчинг.