J'ai la fonction qui retourne True
si le nombre n est le résultat de l'application ou à l'bitwise séquence de xs:FOLDR appliquée à un seul argument
checkBits xs n = not $ null $ filter (==n) $ map (foldr (.|.) zeroBits) (subsequences xs)
Maintenant, la chose que je ne pas obtenir est que le foldr
est donné (.|.)
et zeroBits
, mais n'ai-je pas besoin d'un autre argument pour foldr
. Comme je comprends la fonction de foldr
, vous l'appliquez à une fonction, qui est dans ce cas (.|.)
, à une « valeur de départ », que je suppose est zeroBits
, mais quid du t a
, qui est mentionné dans:
Prelude>:t foldr foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
Y at-il quelque chose qui me manque? Le code ci-dessus fonctionne d'ailleurs comme il se doit.
Haskell n'exige pas que vous fournissiez tous les arguments en même temps. Si vous ne fournissez que les deux premiers, vous appliquez_partiellement la fonction, et le résultat est une autre fonction qui veut les deux derniers. C'est une caractéristique omniprésente de Haskell, non limitée à 'foldr'. –
Essayez de demander à GHCI le type de 'foldr (. |.) ZeroBits' aussi: puisque c'est apparemment une expression valide, elle doit avoir un certain type, n'est-ce pas? Que pensez-vous que ce type signifie? Comment a-t-il obtenu ce type? – amalloy
Oh, je ne le savais pas. Ça a l'air d'être une fonctionnalité sympa! Merci je l'ai eu ! – IPiiro