10
votes

boucle à travers deux variable dans Haskell

Quelle est la façon dont Haskell de faire cela? XXX PRE>

Plus d'arrière-plan: Je résolvez Euler Problème 27 , et j'ai: P>

foldl (\(max,v) (n,a,b)-> if n > max then (n , a * b) else (max ,v) ) (0,0) tuple_list


0 commentaires

3 Réponses :


24
votes

Utilisez une compréhension imbriquée de la liste. Ici 'foo' est '(,)' ': xxx

ou aménagé pour rendre la nidification plus claire: xxx


1 commentaires

Cette réponse unique vient de faire autant de choses clic dans ma petite tête de Haskell, merci



14
votes

Ainsi que la réponse des dons, vous pouvez utiliser la liste Monad:

do 
  i <- [0 .. 999]
  j <- [0 .. 999]
  return (foo i j)


0 commentaires

8
votes

Vous pouvez également le faire bien en utilisant Control.Applicatif

C:\programming>ghc --make Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main.exe ...

C:\programming>main
foo 0 0
foo 0 1
foo 0 2
foo 0 3
foo 1 0
foo 1 1
foo 1 2
foo 1 3
foo 2 0
foo 2 1
foo 2 2
foo 2 3
foo 3 0
foo 3 1
foo 3 2
foo 3 3


0 commentaires