У меня возникли проблемы с этим кодом. Я пытаюсь написать простую функцию, которая принимает два списка и пытается разделить каждый элемент списка A на соответствующий элемент списка B. Если элемент в списке B равен 0, он должен вернуть Nothing
, в противном случае он должен вернуть Just (a/b)
.Haskell code zipWith using Возможно
Вот код:
divlist :: Integral a => [a] -> [a] -> [Maybe a]
divlist = zipWith (\x y -> if (y /= 0) then Just (x/y) else Nothing)
Это, вероятно, что-то глупо, но я просто не могу найти его.
EDIT: Это то, что GHCi сообщает:
C:\Users\spravce\Desktop\Haskell\6.hs:16:51: error:
• Could not deduce (Fractional a) arising from a use of ‘/’
from the context: Integral a
bound by the type signature for:
divlist :: Integral a => [a] -> [a] -> [Maybe a]
at C:\Users\spravce\Desktop\Haskell\6.hs:14:1-48
Possible fix:
add (Fractional a) to the context of
the type signature for:
divlist :: Integral a => [a] -> [a] -> [Maybe a]
• In the first argument of ‘Just’, namely ‘(x/y)’
In the expression: Just (x/y)
In the expression: if (y /= 0) then Just (x/y) else Nothing
Failed, modules loaded: none.
EDIT 2: Использование div x y
вместо x/y
просто сделал это. :) Благодаря.