Я хочу, чтобы определить тип данных R как рациональные числа, где R представляет собой (знаменатель, числитель) и я определил, как:Haskell типов, определенный пользователь данные
data R = R {n::Int,
d::Int} deriving Show
Теперь я попытался сделать функцию, которая принимает два аргумента (список R и R) и возвращает список с эквивалентами R. Я пробую это, но даю мне ошибку типов.
equivalentes' :: [R] -> R -> [R]
equivalentes' [] _ = []
equivalentes' (x:xs) r
| (n x `mod` n r == 0) && (d x `mod` d r == 0) = (R(d n)x): equivalentes' xs r
| otherwise = equivalentes' xs r
Моя идея заключается в том, чтобы вернуть что-то вроде этого:
> equivalentes'[R(2,4),R(3,5),R(4,8)] (R(1,2))
[R (2,4),R (4,8)]
Какая ошибка? – Cirdec
@Cirdec 'Не удалось сопоставить ожидаемый тип' R 'с фактическим типом 'R -> Int' ...' –
Вы показали нам определение для функции с именем 'equales'' (с' '' в конце), но его реализация и ваш пример вызова относятся к 'equales' (без' ''). Где определение этой другой функции? – jwodder