Может ли кто-нибудь помочь мне с этим? Я пытаюсь написать функцию проверки, если x нечетно, без использования нечетной функции. Нравится это не работает, но я не знаю почему.Функция проверки Haskell, если число нечетное, без использования нечетной функции
ugerade :: Integral a => a -> Bool
ugerade x
|x elem oddList = True
|otherwise = False
where
oddList=[x | x<-[1,3..]]
Ошибка
Could not deduce (Num t0) arising from the literal ‘1’
from the context (Integral a)
bound by the type signature for ugerade :: Integral a => a -> Bool
at /Users/Mauritius/Desktop/Haskell/u02/2-2/funktionen.hs:24:11-33
The type variable ‘t0’ is ambiguous
Relevant bindings include
oddList :: [t0]
(bound at /Users/Mauritius/Desktop/Haskell/u02/2-2/funktionen.hs:29:4)
Note: there are several potential instances:
instance Integral a => Num (GHC.Real.Ratio a)
-- Defined in ‘GHC.Real’
instance Num Integer -- Defined in ‘GHC.Num’
instance Num Double -- Defined in ‘GHC.Float’
...plus three others
In the expression: 1
In the expression: [1, 3 .. ]
In a stmt of a list comprehension: x <- [1, 3 .. ]
ли по модулю запрещен, а? –
нет нет. но я хотел сделать это со списком. я не ошибаюсь – Mauritius
'нет. даже '? :-) Еще в духе ваших усилий до сих пор было бы «ungerade x = Data.Maybe.fromJust (поиск x (zip [1 ..] (цикл [True, False])))' который, по крайней мере, заканчивается для положительного 'x'. – yatima2975