Je veux retourner tous les cubes (x ^ 3) qui sont inférieurs à un paramètre Int à l'aide d'une compréhension de la liste. J'ai ce qui suit: L'astérisque est où j'ai le problème. J'ai un peu envie d'arrêter de traiter la boucle une fois que le Si j'essaie de retourner sinon code> arrive. La finale
[liste] code> ne doit avoir que les cubes, pas les autres valeurs de
x code>. Je ne me soucie pas vraiment de la façon dont cela se passe, mais je voudrais connaître les options et quelles sont les différences (le cas échéant). P>
null code>, < Code> rien code>,
'' code> et quelques autres. Je sais que je suis censé retourner un type de
int code> si je retourne quelque chose du tout. P> p>
3 Réponses :
Est-ce considéré comme une compréhension de la liste?
@chrisfrisina: Non, mais vous ne pouvez pas le faire avec une compréhension de liste. Vous pouvez faire exclure les éléments restants, mais ce n'est pas la même chose (moins efficace et ne fonctionne pas sur des listes infinies). La chose la plus proche serait probablement Carte deJust $ Mainmental IsJust $ [si x * x * x <= int alors juste x autre rien | x <- [0 ..]] code>.
Pour ajouter au commentaire de Miniitech, la liste des compréhensions ne vont que si loin; Lorsque vous commencez à faire des choses plus complexes, il vaut mieux apprendre à utiliser la plus grande variété de choses proposées dans le data.list code>
module de bibliothèque (comme MainMentre code>).
Liste des compréhensions Support Guards em>. Depuis la liste des compréhensions de la liste correspond à la liste Monad, cela équivaut à l'utilisation du si nous descendons cela dans ceci est apparenté à un filtre. P> Guard Code> Fonction dans un
faire code> Bloc: p>
>> = code> et en ligne les définitions de
>> = code> et
gardien code>: p>
takeWhile (\x -> x ^ 3 <= int) [0..int]
Prenez une racine cube par exemple: p>
Il en résulte que [0,1,8,27] code> pour les deux
27 code> et
64 code>.
Maintenant, cela inclura 1000 pour tout (729, 1000).
MiniTech: soupir, supposons que je vais ajouter la vérification des limites.
Vous ne pouvez pas utiliser la liste de compréhension de la liste?